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