无法推进参考阵列。猫鼬

时间:2015-09-22 12:10:33

标签: node.js express mongoose

我不知道为什么,但我不能在数组userfound.articles上使用push方法。

    app.post("/article", function (req, res){
        userModel.find({username : req.body.username}, function (err, userfound){
                var newArticle = new articleModel({
                    title : req.body.title,
                    text : req.body.text,
                    creator : userfound._id
                });

                newArticle.save(function (err, article){
                        userfound.articles.push(article); //Error : Cannot read property 'push' of undefined
                        userfound.save();
                        res.send("Article enregistré : " + userfound.articles);
                });
        });
    }
});

这是我的架构代码。

    var userSchema = new Schema ({
    username : { type : String, required : true, unique : true},
    password : { type : String, required : true},
    isAdmin : Boolean,
    comments : [{type : Schema.Types.ObjectId, ref : "Comment"}],
    articles : [{type : Schema.Types.ObjectId, ref : "Article"}],
    created_at : {type : Date, default : Date.now},
    modified_at : Date
});

已定义Userfound,但引用数组未定义。

1 个答案:

答案 0 :(得分:1)

find将结果作为文档数组提供给回调,因此userfound是一个数组,这就是为什么它没有articles属性。

使用findOne代替userfound是您正在查找的单个文档:

userModel.findOne({username : req.body.username}, function (err, userfound){ ...

请注意,如果找不到该用户,userfound将为null