有没有办法在Sails中同时查询多个表?

时间:2016-01-29 20:45:58

标签: angularjs sails.js waterline sails-postgresql

我的任务是将Angular Typeahead搜索字段添加到站点,数据需要来自多个表。它需要是一个"搜索所有的东西"一种在一个地方查找人员,服务器和应用程序的查询。

我认为最好的方法是在Sails中使用一个API端点,它可以从同一个数据库中的3个表中提取并发送结果,但我不太清楚如何去做它

1 个答案:

答案 0 :(得分:1)

使用内置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
            })
        })
    }

}