Javascript 将对象Id添加到对象Id数组中

Javascript 将对象Id添加到对象Id数组中,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,即使我将post.\u id添加到用户posts数组中,posts数组仍然为空。请帮我找出错误。我想稍后使用对象Id填充posts数组 User.js var mongoose=require('mongoose'); var Schema=mongoose.Schema; var User=newschema({ 姓名:{ 类型:字符串, 要求:正确, 独一无二:真的 }, 电邮:{ 类型:字符串, 必填项:true }, 密码:{ 类型:字符串, 必填项:true }, 职位:[{ 类型:m

即使我将
post.\u id
添加到用户posts数组中,posts数组仍然为空。请帮我找出错误。我想稍后使用对象Id填充posts数组

User.js

var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var User=newschema({
姓名:{
类型:字符串,
要求:正确,
独一无二:真的
},
电邮:{
类型:字符串,
必填项:true
},
密码:{
类型:字符串,
必填项:true
},
职位:[{
类型:mongoose.Schema.Types.ObjectId,
参考:“邮政”
}]
});
module.exports=mongoose.model('User',User);
Post.js

const mongoose=require('mongoose');
猫鼬。连接(“mongodb://localhost:27017/PostsDB“,{useNewUrlParser:true,useUnifiedTopology:true});
常量后模式={
标题:字符串,
内容:字符串,
作者:{
类型:mongoose.Schema.Types.ObjectId,
参考:“用户”
}
};
const Post=mongoose.model(“Post”,PostSchema);
模块出口=邮政;
app.js

app.post(“/compose”),函数(req,res){
const post=新职位({
标题:req.body.postTitle,
内容:req.body.postBody,
作者:请求用户。\u id
});
post.save();
findOne({u id:req.User.\u id})。然后(函数(result,err){
控制台日志(结果);
控制台日志(post.\U id的类型);
结果.post.push(post.\U id);
}).catch(err=>{console.log(err);});
res.redirect(“/”);
})

您只是将
id
压入数组,但没有将其再次保存回数据库。 因此,一旦按下
id
,使用
save
功能保存更新的值,或者您可以使用更新查询,如

app.post(“/compose”),函数(req,res){
const post=新职位({
标题:req.body.postTitle,
内容:req.body.postBody,
作者:请求用户。\u id
});
post.save();
findOne({u id:req.User.\u id})
.then(函数(错误、结果){
控制台日志(结果);
控制台日志(post.\U id的类型);
结果.post.push(post.\U id);
result.save();//{console.log(err);});
res.redirect(“/”);
})

另外,建议在回调函数中使用
err
作为第一个参数

您只是将
id
压入数组,但不会将其再次保存回数据库。 因此,一旦按下
id
,使用
save
功能保存更新的值,或者您可以使用更新查询,如

app.post(“/compose”),函数(req,res){
const post=新职位({
标题:req.body.postTitle,
内容:req.body.postBody,
作者:请求用户。\u id
});
post.save();
findOne({u id:req.User.\u id})
.then(函数(错误、结果){
控制台日志(结果);
控制台日志(post.\U id的类型);
结果.post.push(post.\U id);
result.save();//{console.log(err);});
res.redirect(“/”);
})
建议在回调函数中使用
err
作为第一个参数