2
我的任務是向網站添加一個Angular Typeahead搜索字段,並且數據需要來自多個表。它需要成爲一種「搜索所有事物」的查詢類型,在一個地方尋找人員,服務器和應用程序。有沒有辦法在Sails中同時查詢多個表?
我在想這樣做的最好方法是在Sails中有一個API端點,它可以從同一個數據庫的3個表中拉出來併發送結果,但我不太清楚如何去做。
我的任務是向網站添加一個Angular Typeahead搜索字段,並且數據需要來自多個表。它需要成爲一種「搜索所有事物」的查詢類型,在一個地方尋找人員,服務器和應用程序。有沒有辦法在Sails中同時查詢多個表?
我在想這樣做的最好方法是在Sails中有一個API端點,它可以從同一個數據庫的3個表中拉出來併發送結果,但我不太清楚如何去做。
使用內置的bluebird library,特別是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
})
})
}
}