这是我的架构:
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
。所以,我不知道为什么不定义。我想我必须创建一个新的数组元素,然后设置该数组元素的属性,但我不知道如何。任何解决方案......?
谢谢你的进步!
答案 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; }
});
});