2015-07-01 93 views
0

我正在尋找分離出我的mongo db查詢到一個單獨的js文件,以幫助重用代碼,在下面的格式(這是行不通的)。任何想法我可以做到這一點?節點分離出mongo查詢

queries.js

var Merchants = require('../models/Merchants'); 

var query = { 
    returnMerchantIDs: function() { 
     var results = Merchants.find(function(err, merchants){ 
      if (err) return console.error(err); 
      return merchants; 
      }) 
     return results; 
} 

module.exports = query; 

routes.js

var queries = require('../config/queries'); 

    app.get('/queries', function (req, res) { 
    res.send(queries.returnMerchantIDs()); 
    }); 

回答

1

你的「迴歸商人實際上是從回調返回,而不是從returnMerchantIDs功能。這是這不起作用的原因。有兩種方法可以做到這一點。

有returnMerchantIDs接受像這樣

var query = { 
    returnMerchantIDs: function (callback) { 
     var results = Merchants.find(function(err, merchants){ 
      if (err) return console.error(err); 
      callback(merchants); 
      }) 
     return results; 
} 

回調,這是你將如何把這種

app.get('/queries', function (req, res) { 
    queries.returnMerchantIDs(function(merchants) { 
     res.send(merchants); 
    })); 
}); 

或者從貓鼬返回承諾給調用者和exec有經過回調

var query = { 
    returnMerchantIDs: function() { 
     var results = Merchants.find(); 
     return results; 
    } 
} 

app.get('/queries', function (req, res) { 
    queries.returnMerchantIDs().exec(function(err, merchants)) { 
     if (err) res.send(err) else res.send(merchants); 
}