Javascript 在多级mongoose模式中设置属性

Javascript 在多级mongoose模式中设置属性,javascript,node.js,mongoose,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(e

这是我的模式:

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; }

     });

 });
控制台返回
类型错误:无法设置未定义的属性“title”
。所以,我不知道为什么是未定义的。我想我必须创建一个新的数组元素,然后设置该数组元素的属性,但我不知道如何设置。有什么解决办法吗


谢谢你的预付款

任何数组中都没有这样的项:
anyArray[anyArray.length]

我想您必须使用
anyArray[anyArray.length-1]

任何数组中都没有这样的项:
anyArray[anyArray.length]

你必须使用
anyArray[anyArray.length-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; }
    });
});

它未定义,因为您已离开
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; }
    });
});