router.post('/orders/finish', function(req, res, next) {
var order_id = req.body.order_id;
var user_id = req.body.user_id;
var table_id = '';
var result = [];
mongo.connect(url, function(err, db) {
assert.equal(null, err);
db.collection('tables').update({id: table_id, status: true}, {$set: {status: false}}, function(err, result) {
assert.equal(null, err);
});
var cursorTables = db.collection('tables').find({status: false});
cursorTables.forEach(function(doc, err) {
assert.equal(null, err);
result.push(doc);
}, function() {
db.close();
res.send(JSON.stringify(result));
});
});
我正在更新表集合并尝试获取它们,但我得到了旧集合而没有更新。然而在下一个请求中它发生了变化。
当您进行 .find() 调用时,您的集合尚未完成更新。
您可以选择在 .update() 调用的回调中调用 .find() ,也可以根据您的版本使用 Promise 或 async/await 。
另一种解决方案是使用查找并修改 https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/与new option:
选修的。如果为 true,则返回修改后的文档而不是原始文档。 findAndModify() 方法忽略删除操作的新选项。默认为 false。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)