如何使用mongoose更新节点中的内部文档

时间:2015-11-03 12:28:59

标签: javascript node.js mongodb mongoose

我想在pro_picture中插入cont和cont_type。但这不是嵌入式架构。

我的架构:

 var userSch = new Schema({
    name: String,
    email: String,
    profile_picture: {
       cont: String,
       cont_type: String
    }
 });

 var User = mongoose.model('user', userSch);

现在我想找到电子邮件为“something@example.com”并更新pro_picture的用户。

我尝试了以下代码。

  User.findOne({email: data.email}, function (err, user) {
   var userData = new User({
      profile_picture: {
        cont: data.pro_cont,
        cont_type: data.pro_cont_type
      }
    });
   user.profile_picture = userData;
   console.log(user.profile_picture);
   console.log(user);


  user.save(function (err) {
    if(err) throw err;
    callback(rjTypes.result.SUCCESS);
  });

显示

profile_picture: null  //in console

但该字段不存在于集合

2 个答案:

答案 0 :(得分:1)

最后我找到了..

我使用这种技术解决了......

User.findOne({email: data.email}, function (err, user) {
    user.profile_picture.cont = data.pro_cont;
    user.profile_picture.cont_type = data.pro_cont_type;
    console.log(user.profile_picture);
    console.log(user);
    //user.profile_picture.cont_type = data.pro_cont_type;
    user.save(function (err) {
      if(err) throw err;
      callback(rjTypes.result.SUCCESS);
    });
});

答案 1 :(得分:1)

我认为你做的很多,尝试改变

var userData = new User({
   profile_picture: {
     cont: data.pro_cont,
     cont_type: data.pro_cont_type
   }
 });

var userData = {
     cont: data.pro_cont,
     cont_type: data.pro_cont_type
};