我是mongo的新手,尝试返回聚合的结果。
joinById: (collection, id, $lookup, res) => {
var $match = {"_id": ObjectId(id) };
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("myDB");
dbo.collection(collection)
.aggregate([{ $match }, { $lookup }])
.toArray(function (err, result) {
if (err) throw err;
const jsonable = stringify(result);
res.status(200).json(jsonable)
db.close();
});
});
}
我在第一步就做好了,但是我需要做一些修改,因为我不知道如何将结果返回给调用函数。
所以我做了这个改变:
joinById2: async (collection, id, $lookup) => {
const $match = {"_id": ObjectId(id) };
const client = await MongoClient.connect(url);
const table = client.db("myDB");
const collect = table.collection(collection);
const aggregate = collect.aggregate([{ $match }, { $lookup }]);
const result = aggregate.toArray()
return stringify(result);
},
现在我可以返回值,但是...聚合没有给予任何结果。
我更喜欢第二种方式来写它,并且已经改变了其他功能的工作。所以我想知道:为什么我不能得到同样的结果?我该如何解决这个问题?
1条答案
按热度按时间e4yzc0pl1#
我刚刚错过了承诺。
等待它的工作!