Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 更新mongoDB文档需要两次时间_Node.js_Mongoose - Fatal编程技术网

Node.js 更新mongoDB文档需要两次时间

Node.js 更新mongoDB文档需要两次时间,node.js,mongoose,Node.js,Mongoose,我有这个模式: 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: Boole

我有这个模式:

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}这将返回更新后的结果。

调用此函数一次后,是否可以在数据库中检查结果。告诉我它显示了什么。因为我想确定数据是否更新。