gpt4 book ai didi

node.js - 更新 mongoDB 文档需要两次

转载 作者:行者123 更新时间:2023-12-04 08:30:34 24 4
gpt4 key购买 nike

我有这个架构:

const opening_hourSchema = new Schema({
sunday: {open: { type: Boolean, default: true}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
monday: {open: { type: Boolean, default: true}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
tuesday: {open: { type: Boolean, default: true}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
wednesday: {open: { type: Boolean, default: true}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
thursday: {open: { type: Boolean, default: true}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
friday: {open: { type: Boolean, default: false}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
saturday: {open: { type: Boolean, default: false}, from: { type: String, default: "10:00"}, to: { type: String, default: "19:00"} },
}
, { timestamps: true });

我想用一个看起来像这样的对象更新它:

opening_hours:
friday: {open: false, from: "06:20", to: "13:00"}
monday: {open: false, from: "02:00", to: "09:00"}
saturday: {open: false, from: "07:00", to: "14:00"}
sunday: {open: false, from: "01:00", to: "08:00"}
thursday: {open: false, from: "05:00", to: "12:00"}
tuesday: {open: false, from: "03:00", to: "10:00"}
wednesday: {open: false, from: "04:00", to: "11:00"}
__proto__: Object
_id: "5fbd18517954d20024a132b4"

这是我完成更新的功能。

router.post('/set-open-hours', auth, function (req, res) {
OpeningHours.findByIdAndUpdate(req.body._id , req.body.opening_hours)
.then((opening_hours) => {
res.json(opening_hours)
})
.catch(err => res.status(400).json("Error2: " + err));
})

奇怪的是它有效,但出于某种原因需要尝试两次。如果我调用该函数一次,它将返回旧对象。出于某种原因,第二次它会返回正确的对象。

最佳答案

这是因为 findByIdAndUpdate() 方法返回匹配更新操作之前的条件。

Model.findByIdAndUpdate(id, updateObj, {new: true})

{new: true} 这将返回更新后的结果。

关于node.js - 更新 mongoDB 文档需要两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65046301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com