mongoose模态

时间:2017-11-05 09:08:10

标签: mongodb express mongoose promise

这是我的控制器的样子

exports.pnumber = async(function* (req, res) {
  const user = new User()
  try {
    yield user.findOneAndUpdate(req.body.pnumber, req.body.uid)
    res.send('success')
  } catch (err) {
    console.log(err)
  }
})

我的模态是

  findByIdAndUpdate: function (pnumber, uid) {
    var query = {'_id': uid},
      update = {
        $push: {pnumbers: pnumber}
      },
      options = {upsert: true}
    return UserSchema.findOneAndUpdate(query, update, options)
  },

,架构定义是

const UserSchema = new Schema({
  name: { type: String, default: '' },
  pnumbers: [],
  createdAt: { type: Date, default: Date.now }
})

我得到的错误是

https://pastebin.com/ha65Jizm

2 个答案:

答案 0 :(得分:0)

我正在保存错误的对象。管理以解决此问题

  findOdUpdate: function (pnumber, uid) {
    const User = mongoose.model('User')
    var query = {'_id': uid},
      update = {
        $push: {pnumbers: pnumber}
      },
      options = {upsert: true}
    return User.update(query, update, options)
  },

答案 1 :(得分:-1)

在findOneAndUpdate .catch((err)=> {})之后使用以捕获发生的任何错误,因为您正在使用异步,您可以在try块中使用await而不是yield。 您面临的错误是'用户未定义'。即您正在使用的变量

user.findByIdAndUpdate(req.body.pnumber, req.body.uid)

这里用户不是模特。在这种类型之前:

const user = mongoose.model('user',UserSchema)