分离mongo查询的节点

node separating out mongo queries

本文关键字:节点 查询 mongo 分离      更新时间:2023-09-26

我正在考虑将我的mongo-db查询分离到一个单独的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());
  });

您的"退货商家"实际上是从回调返回的,而不是从returnMerchantID函数返回的。这就是为什么这不起作用。有两种方法可以做到这一点。

让returnMerchantID接受类似的回调

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的promise返回给调用者和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);
}