我想添加一个帖子,然后,如果成功,则将其添加到用户收藏夹。我就是这样的:
这是我的“ app.js”文件,其中包含用户和发布架构。
const mongoose=require('mongoose');
mongoose.connect("mongodb://localhost:27017/blog_demo", {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false
});
//post-{title,content}
var postSchema=new mongoose.Schema({
title:String,
content:String
});
var Post=mongoose.model('Post',postSchema);
//user-{email,name}
var userSchema=new mongoose.Schema({
email:String,
name:String,
posts:[postSchema]
});
var User=mongoose.model('User',userSchema);
//Create data
var newUser=new User({
email:'heromi@gmail.com',
name:'heromi'
});
newUser.posts.push({
title:'reflections on apples',
content:'They are delicious'
});
newUser.save(function(err,user){
if(err){
console.log(err)
}else{
console.log(user)
}
});
User.find({name:'heromi'},function(err,user){
if(err){
console.log(err)
}else{
user.posts.push({
title:'3 thing I hate',
content:'voldemort,voldemort,voldemort'
});
user.save(function(err,user){
if(err){
console.log(err)
}else{
console.log(user)
}
});
}
});
问题是当我尝试将帖子发布给用户时。
user.posts.push(..)
我收到此错误:
TypeError: Cannot read property 'push' of undefined
我们将不胜感激。感谢您的宝贵时间。
谢谢。
答案 0 :(得分:1)
User.find
返回与您的查询对象匹配的文档数组。如果只想要一个结果,请改用User.findOne
或检查user.length > 0
并尝试user[0].posts.push(...)