用猫鼬查询mongodb

时间:2018-12-14 06:00:24

标签: node.js mongodb mongoose mongodb-query

我正在尝试获取文档,对其进行更新,然后将其保存回数据库,但是它似乎无法正常工作,即即使回调的结果表明更新成功,也没有将其保存到数据库。返回新更新的文档,但是在检查数据库时,旧版本仍然存在。这是查询;

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])

指示已保存更新,但正在检查数据库,仍在使用旧版本的文档。我在这里想念什么

1 个答案:

答案 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(客户端)

相关问题