分离出mongo查询的节点

时间:2015-07-01 21:46:47

标签: javascript node.js mongodb mongoose

我正在考虑将我的mongo数据库查询分离到一个单独的js文件中以帮助重用代码,这些内容采用以下格式(这不起作用)。我有什么想法可以做到这一点吗?

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 个答案:

答案 0 :(得分: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);
    }));
});

或者将承诺从mongoose返回给调用者并执行那里传递回调

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