我正在尝试获取文档,对其进行更新,然后将其保存回数据库,但是它似乎无法正常工作,即即使回调的结果表明更新成功,也没有将其保存到数据库。返回新更新的文档,但是在检查数据库时,旧版本仍然存在。这是查询;
updateBed: (req, res) => {
Client.findById(
req.body.cid, (e, client) => {
if (e) {
console.log(e)
} else {
console.log(client.departments[2].beds[req.body.bedNo])
client.departments.forEach((d, i) => {
if (d.name !== 'GOPD') {
return
} else {
d.beds[req.body.bedNo] = true
}
})
client.save((e, cl) => {
if (e) {
console.log(e)
} else {
console.log(cl.departments[2].beds[req.body.bedNo])
res.send(cl.departments)
}
})
}
})
}
更新前的第一个登录是
console.log(client.departments[2].beds[req.body.bedNo])
与更新后的上次登录不同,
console.log(cl.departments[2].beds[req.body.bedNo])
指示已保存更新,但正在检查数据库,仍在使用旧版本的文档。我在这里想念什么
答案 0 :(得分:1)
client.save((e,cl)=> ....)
save方法在回调中只有e (error)
。
您的数据库结构也写得不好。 您的大多数更新必须由mongodb完成,而不是在节点服务器上完成。
将床铺作为单独的集合,并在client.department中提供其ID。
进行以下更改
client.save( e => {if(e) console.log(e)} )
findById也可以,但是使用findOne({_ id:req.body.cid})更好。
要检查其是否仅更新 console.log(客户端)。