我正在运行 mongodb 查询,其中我使用 find 方法来获取记录,即使字段存在于 mongodb 中,它也不会更新

问题描述 投票:0回答:1

我使用 find 来获取给我猫鼬记录的记录,然后我使用 toJson() 转换为对象,以便我可以修改字段。

body=req.body;

const data = model.find({target: body.target});

我得到带有这样字段的猫鼬文档.... ['$__', 'isNew', 'errors', '$locals', '$op', '_doc', '$init' ]

所以我使用 toJSON() 方法将对象转换为普通对象

const Obj = data[0].toJSON();

现在我正在创建一个更新对象来设置...

const updateObj = { [body[str]] = parseFloat(Obj[num_1]) + parseFloat(body[num_1])

}

model.findOneAndUpdate({目标: body.target},{ $set:updateObj

}

这是我的代码结构,我无法更新字段,但在控制台中数据正常,提前感谢

我在控制台中得到了正确的结果,但 mongodb 无法识别这些字段,是因为我转换为 JSON 并更新了它吗?,如果不是,请让我知道我哪里出错了

node.js mongodb mongoose mongodb-query findoneandupdate
1个回答
0
投票

如果您使用的是 mongodb atlas, 那么这里的问题可能与您从数据库收集数据的方式有关。

数据在控制台中正确记录的事实表明您与数据库的连接是正确的,并且工作正常,只是在脚本结束之前执行速度不够快。 (它可能在“网络”选项卡中可见)

从数据库获取数据需要是异步函数,因为从托管数据库获取数据需要一些时间, 因此,您需要使用 async/await 关键字来确保您的 mongodb 查询返回一个承诺。

举个例子,

    async getData(){
const data = await model.find({target: body.target})
}
© www.soinside.com 2019 - 2024. All rights reserved.