我正在使用nodejs和mongodb。我正在尝试构建一个查询并执行它,以便我可以通过此api返回一个json对象。当我执行以下操作时,我收到错误:
{{1}}
我应该如何设置不同的方式。
{{1}}
答案 0 :(得分:0)
您应首先导入或创建GetTransactionList
计划。
但在你的例子中,它不是一个方案,也没有实现方法exec。
它很简单。
答案 1 :(得分:0)
因为find()方法返回cursor,所以您可能希望在没有传递回调时附加光标的 toArray()
方法来返回Promise。
考虑按如下方式重写代码:
exports.findAll = function(req, res) {
const query = GetTransactionList(parseInt(req.query.limit));
query.then(res.json).catch(console.log);
/* Above is equivalent to
query.then(function(items) {
res.json(items);
}).catch(function(err) {
console.log(err);
});
*/
}
function GetTransactionList(limit){
console.log("GetTransactionList entered with limit: ", limit);
const cursor = db.collection('transtest').find({});
return limit ? cursor.sort([['postdate', -1]]).limit(limit).toArray() : cursor.toArray();
}
答案 2 :(得分:0)
exec是在 mongoose 中定义的Mongoose的辅助方法,而不是在 mongodb 中,因此在mongodb中find()
方法将光标返回到所选文档,您可以使用toArray()
方法从游标返回文档数组。
简单示例
db.collection('restaurants').find().toArray(function(err, documents){
documents.forEach(function(doc){
console.log(doc.name);
});
});
在你的情况下
query.toArray(function(err, items){
//assert.equal(err, null);
items.forEach(function(item){
console.log(item);
});
res.json(items);
})
我希望这可以帮到你