我正在MERN堆栈中开发一个Web应用程序,在此过程中遇到错误,请帮助。当我尝试更新用户时,它给我一个错误,回调必须是函数,已获得“[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
}
}
]
});
2条答案
按热度按时间omqzjyyz1#
findOneAndUpdate
有3个可能的签名:您正在尝试使用签名#2,即利用承诺的签名,因此您需要将语法更改为:
查看所有Mongos节点类型here
ne5o7dgx2#
这是因为你需要把所有的"更新操作"放到第二个对象中。
复制错误:
结果:错误
固定:
将所有$INC操作移动到第二个参数对象中:
结果:有效
基本上你的所有操作都必须作为第二个参数,并且都必须在一个对象中,如下所示:
不要使每个操作单独的对象,否则你会得到这个错误,即.
这里是我的频道上的视频,我告诉你如何修复它:https://youtu.be/nPC1OAGXGWM