2016-01-29 156 views
2

我的任務是向網站添加一個Angular Typeahead搜索字段,並且數據需要來自多個表。它需要成爲一種「搜索所有事物」的查詢類型,在一個地方尋找人員,服務器和應用程序。有沒有辦法在Sails中同時查詢多個表?

我在想這樣做的最好方法是在Sails中有一個API端點,它可以從同一個數據庫的3個表中拉出來併發送結果,但我不太清楚如何去做。

回答

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 
      }) 
     }) 
    } 

} 
相關問題