我正在MERN堆栈中开发一个webapp,同时遇到错误,请帮忙。当我尝试更新用户时,它给我错误,回调必须是一个函数,得到了[object Object]
这是API。
确保用户始终存在。
module.exports.addBlog=(req,res)=>{
const {title,data} = req.body.blog;
console.log(title,data);
const {email} = req.body;
const newblog ={
title,
data
}
userSchema.findOneAndUpdate(
{email},
{$push:{blogArray:newblog}},
{upsert:true},
{useFindAndModify:false}
)
.then(res=>console.log(res))
.catch(err=>console.log(err));
return res.json({msg:"Blog added successfully"});
}
这是用户方案。
const userSchema = new mongoose.Schema({
firstname:{
type:String,
required:true,
lowercase:true
},
lastname:{
type:String,
required:true,
lowercase:true
},
email:{
type:String,
required:true,
lowercase:true
},
password:{
type:String,
required:true
},
blogArray:[
{
title:{
type:String,
required:true
},
data:{
type:String,
required:true
}
}
]
});
findOneAndUpdate
有3个可能的签名:
findOneAndUpdate(
filter: FilterQuery<TSchema>,
update: UpdateQuery<TSchema> | TSchema,
callback: MongoCallback<FindAndModifyWriteOpResultObject<TSchema>>,
): void;
findOneAndUpdate(
filter: FilterQuery<TSchema>,
update: UpdateQuery<TSchema> | TSchema,
options?: FindOneAndUpdateOption<TSchema>,
): Promise<FindAndModifyWriteOpResultObject<TSchema>>;
findOneAndUpdate(
filter: FilterQuery<TSchema>,
update: UpdateQuery<TSchema> | TSchema,
options: FindOneAndUpdateOption<TSchema>,
callback: MongoCallback<FindAndModifyWriteOpResultObject<TSchema>>,
): void;
您正在尝试使用签名2(即使用诺言的签名),因此您需要将语法更改为:
userSchema.findOneAndUpdate(
{email},
{$push:{blogArray:newblog}},
{upsert:true, useFindAndModify:false},
)
.then(res=>console.log(res))
.catch(err=>console.log(err));
在这里查看所有Mongos nodejs类型
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句