在mongoose中创建新的子文档

时间:2018-03-15 11:26:48

标签: mongodb mongoose

我在这里缺少什么?我想在User模式中添加一个子文档,我已经在其他地方预定了模式。

User.findById(req.body.id, function(err, user) {
        if (err) return console.log(err);
        reivews: [{
            reviewer: req.body.name,
            content: req.body.content
        }]
        user.save(function(err) {
            if (err) console.log(err);
            res.send('saved')
        })
    })

它说已保存,但我没有看到用户身上有我试图保存的ID的评论。

模式

const Review = new Schema({
    reviewer: String,
    date    : { type: Date, default: Date.now },
    content : String,
    isLive  : { type: Boolean, default: false }
});

const User = new Schema({
        username: { type: String, required: true, unique: true },
        password: { type: String, required: true },
        createdAt: { type: Date, default: Date.now },
        reviews: [Review]

});

User.plugin(passportLocalMongoose);
module.exports = mongoose.model('Review', Review);
module.exports = mongoose.model('User', User);

1 个答案:

答案 0 :(得分:0)

请试试这个

User.findById(req.body.id, function(err, user) { 
  if (err) return console.log(err); 
  if (user.reviews === undefined || user.reviews.length == 0) { 
    user.reviews = []; 
  } 
  user.reviews.push({ 
    reviewer: req.body.name, 
    content: req.body.content 
  }); 
  user.save(function(err) { 
    if (err) console.log(err); 
    res.send('saved') 
  }) 
})

根据定义的架构确保user中的数据