这是Mongoose Schema:
var userschema = new mongoose.Schema({
user: String,
imagen: [{
tags: [String],
}]
});
我正在使用这个标签:
var bodytags = req.body.tags;
var tags = tbags.split(" ");
我从req.body获取标签,并将所有标签放在一个数组中。但问题出现在这里:
var img = usermodel.findOne({ user: req.session.user }, function(err, user){
var img = user.imagen.push({
tags: undefined
});
});
img.tags.push(标签);
当我收到sais TypeError: Cannot call method 'push' of undefined
的错误时。如何在我的Schema的标签数组中推送我的标签数组?
谢谢你的进步!
编辑:
这将是我想要的结果:
{
user: randomuser,
imagen: [{
tags: ["one", "two", "three"
}]
}
并且,例如,如果有两个imagen对象:
{
user: randomuser,
imagen: [{
tags: ["one", "two", "three"]
},
{
tags: ["four", "five", "six"]
}]
}
答案 0 :(得分:1)
似乎错误可能是由于变量赋值的不一致造成的。所以创建了一个独立的例子来测试它的工作原理
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/images');
var UserSchema = new mongoose.Schema({
user: String,
imagen: [ {
tags: [String]
} ]
});
var User = mongoose.model('User', UserSchema);
var newUser = new User({ user: 'Almypal'});
var bodytags = 'Home basic tutor';
var tagarray = bodytags.split(" ");
newUser.save(function(err, result){
if(err)
{
console.log(JSON.stringify(err));
}
else
{
result.imagen.push({ tags: tagarray });
result.save( function(error, data){
if(error){
console.log(JSON.stringify(error));
}
else{
console.log(JSON.stringify(data));
}
});
}
});
MongoDB现在有以下文档
{ "_id" : ObjectId("50e84425862a2af616000001"), "imagen" : [ { "tags" : [ "Home", "basic", "tutor" ] } ], "user" : "Almypal" }
希望这有帮助。