在多级mongoose模式中设置属性

时间:2013-01-04 14:28:19

标签: javascript node.js mongoose

这是我的架构:

var userschema = new mongoose.Schema({

  user: String,
  imagen: [{ 

              title: String,
              name: String,
              path: String,

           }]

});

我正在尝试这个:

 usermodel.findOne({ user: req.session.user }, function(err, user){

     var img = user.imagen[user.imagen.length];

     img.title = req.body.title;

     user.save(function(err){

        if(err) { throw err; }

     });

 });

控制台返回TypeError: Cannot set property 'title' of undefined。所以,我不知道为什么不定义。我想我必须创建一个新的数组元素,然后设置该数组元素的属性,但我不知道如何。任何解决方案......?

谢谢你的进步!

2 个答案:

答案 0 :(得分:2)

任何数组中都没有这样的项目:anyArray[anyArray.length]。 您必须使用anyArray[anyArray.length - 1]我认为。

答案 1 :(得分:1)

它未定义,因为你已经离开了user.imagen数组的末尾。它只有user.imagen.length元素,因此使用JavaScript的基于0的数组索引,最后一个元素位于索引user.imagen.length-1

如果您要添加新元素:

usermodel.findOne({ user: req.session.user }, function(err, user){
    user.imagen.push({ title: req.body.title });
    user.save(function(err){
        if(err) { throw err; }
    });
});