我正在考虑将我的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());
});
答案 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);
}