我的任务是向站点添加Angular Typeahead搜索字段,并且数据需要来自多个表。它必须是一种“搜索所有事物”的查询,可以在一处查找人员,服务器和应用程序。
我当时想最好的方法是在Sails中有一个API端点,它可以从同一个DB的3个表中提取并发送结果,但是我不确定该怎么做。
使用内置的bluebird库,特别是Promise.all()。要处理结果,请使用.spread()。控制器代码示例(根据您的情况进行修改):
var Promise = require('bluebird');
module.exports = {
searchForStuff: function(req, res) {
var params = req.allParams();
// Replace the 'find' criteria with whatever suitable for your case
var requests = [
Person.find({name: params.searchString}),
Server.find({name: params.searchString}),
Application.find({name: params.searchString})
];
Promise.all(requests)
.spread(function(people, servers, applications) {
return res.json({
people: people,
servers: servers,
applications: applications
})
})
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句