保存另一个对象时更新ObjectId

时间:2017-04-10 20:59:47

标签: javascript node.js mongodb mongoose mongoose-schema

保存

后,我尝试更新架构中外键的objectId
   router.post('/add/:id', (req,res)=>{
    const newMenu = new Menu()
    newMenu.menu_name = req.body.menu_name

    const restaurantId = req.params.id

    Menu.addNewMenu(newMenu, (err, menu)=>{
      if (err) {
        console.log(err);
        res.json({status: false, err: err})
      }else {
        Restaurant.findRestById(restaurantId,(err,restaurant)=>{
          restaurant.update({
            $push: {menus: menu._id}
          })
          restaurant.save((err,rest)=>{
            res.json({status: true})
          })
        })
      }
    })
  })

但此menus数组未更新后

这是我的Menu架构

    const MenuSchema = mongoose.Schema({
  menu_name:{
    type: String,
    required: true
  },
  items:[
    {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Item'
    }
  ]
})

Restaurant架构

    const RestaurantSchema = mongoose.Schema({
  rest_name: {
    type: String,
    required: true
  },
  opening_period:{
    type: String,
    required: true
  },
  image_url:{
    type:String,
    required: true
  },
  menus:[
    {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Menu'
    }
  ]
})

1 个答案:

答案 0 :(得分:0)

尝试简单

Restaurant.findRestById(restaurantId, (err, restaurant) => {
    restaurant.update({ $push: { menus: menu.id }}, (err) => {
         res.json({ status: true })
    })
}) 

您的save可能已覆盖了第一次update更改。

使用时间更短findOneAndUpdate