有没有办法在 Sails 中同时查询多个表?
Is there a way to query multiple tables at the same time in Sails?
我的任务是向站点添加 Angular Typeahead 搜索字段,数据需要来自多个表。它需要是一种 "search all the things" 查询,可以在一个位置查找人员、服务器和应用程序。
我认为最好的方法是在 Sails 中有一个 API 端点,它可以从同一个数据库上的 3 个表中提取并发送结果,但我不太确定怎么办。
使用内置 bluebird library, specifically Promise.all(). To handle the results, use .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
})
})
}
}
我的任务是向站点添加 Angular Typeahead 搜索字段,数据需要来自多个表。它需要是一种 "search all the things" 查询,可以在一个位置查找人员、服务器和应用程序。
我认为最好的方法是在 Sails 中有一个 API 端点,它可以从同一个数据库上的 3 个表中提取并发送结果,但我不太确定怎么办。
使用内置 bluebird library, specifically Promise.all(). To handle the results, use .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
})
})
}
}