这是我的控制器的样子
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 }
})
我得到的错误是
答案 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)