在多层猫鼬模式中设置属性

Set properties in multi-level mongoose schema

本文关键字:设置 属性 模式      更新时间:2023-09-26

这是我的模式:

var userschema = new mongoose.Schema({
  user: String,
  imagen: [{ 
              title: String,
              name: String,
              path: String,
           }]
});

And I'm try this:

 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。我不知道为什么没有定义。我想我必须创建一个新的数组元素,然后设置数组元素的属性,但我不知道怎么做。有什么解决办法吗?

谢谢的!

在任何数组中都没有这样的项: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; }
    });
});