首页 > 解决方案 > 使用 Mongoose 和 Node.js 更新 MongoDB 中的数据

问题描述

当用户访问页面时,我正在尝试更新用户集合中的某些信息。

但是我的方法不起作用。任何人都可以帮助修复它。

app.get('/add-your-accommodation/apartment-type', (req, res, next) => {

  if (req.isAuthenticated()) {
    res.render('apartment-type.ejs')
  } else {
    res.render('login.ejs')
  }

  var id = req.params.id

  if(mongoose.Types.ObjectId.isValid(id)) {
     User.findByIdAndUpdate(id, {$set: {accomtype: 'house'}},{new: true})   
  }
});

标签: node.jsmongodbexpressmongoose

解决方案


req.params.id是未定义的,因为在路由路径中没有提到它。你可以这样做,

app.get('/add-your-accommodation/apartment-type', (req, res) => {

  if (!req.isAuthenticated()) {
    return res.render('login.ejs')
  }

  res.render('apartment-type.ejs')

  var id = req.user._id //since you're using passport (LocalStrategy)

  if(mongoose.Types.ObjectId.isValid(id)) {
     User.findByIdAndUpdate(id, {$set: {accomtype: 'house'}})
  }
})

现在当你调用你的 API 时,这样做,

GET /add-your-accommodation/apartment-type

推荐阅读