在风帆js联合search

我有游戏集合:

{ "name": "Play RoadRash", "version": "1.0.0", "icon": "image-md-two-thirds.png", "id": "6dc41c3fa0e7" } 

和平台集合:

 { "name": "PlayStation", "version": "7", "icon": "playstation.jpg", "id": "55eaf322f1a16" } 

我正在尝试创build一个search查询谁search这两个集合中的名称参数。 有没有人有任何想法如何search在航行水线多个集合?

我们已经在所有模型中编写了一个全文search的控制器。 它所做的就是在请求中通过q参数search所有模型及其属性。 这里是这个控制器的完整代码:

 var _ = require('lodash'); var Promise = require('bluebird'); module.exports = { index: function (req, res) { var models = []; if (!req.param('q')) { return res.badRequest(null, null, 'You should specify a "q" parameter!'); } var q = req.param('q'); if (req.param('model')) { var modelStr = req.param('model').toString().toLowerCase(); if (!(modelStr in sails.models)) { return res.badRequest(null, null, 'Cannot find model: ' + modelStr); } models.push({name: modelStr, model: sails.models[modelStr]}); } else { _.forEach(sails.models, function (model, modelStr) { models.push({name: modelStr, model: model}); }); } Promise.map(models, function (modelObj) { var model = modelObj.model; var modelStr = modelObj.name; var where = _.transform(model.definition, function (result, val, key) { result.or.push(_.set({}, key, {contains: q})); }, {or: []}); return model .find(where) .then(function (queryRes) { var resObj = {}; resObj[modelStr] = queryRes; return Promise.resolve(resObj) }); }) .then(function (searchRes) { return _.transform(searchRes, function (result, val) { result = _.merge(result, val); }, {}); }) .then(res.ok) .catch(res.serverError) } }; 

你可以把它复制粘贴到你的api/controllers/SearchController.js中就可以了。 它仍然需要重构这个代码,但它的工作原理。