0

这是我的架构:

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。所以,我不知道为什么是未定义的。我想我必须创建一个新的数组元素,然后设置该数组元素的属性,但我不知道如何。有什么办法解决这个...?

谢谢提前!

4

2 回答 2

2

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

于 2013-01-04T14:40:34.710 回答
1

它是未定义的,因为您已经离开了user.imagen数组的末尾。它只有user.imagen.length元素,因此对于 JavaScript 的基于 0 的数组索引,最后一个元素位于 index 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; }
    });
});
于 2013-01-04T14:40:56.643 回答