Mongoose-TypeError:无法读取未定义的属性“ push”

时间:2019-09-13 20:16:10

标签: mongodb mongoose

我想添加一个帖子,然后,如果成功,则将其添加到用户收藏夹。我就是这样的:

这是我的“ 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

我们将不胜感激。感谢您的宝贵时间。
谢谢。

1 个答案:

答案 0 :(得分:1)

User.find返回与您的查询对象匹配的文档数组。如果只想要一个结果,请改用User.findOne或检查user.length > 0并尝试user[0].posts.push(...)