在Mongoose Schema中的另一个数组中写入一个数组
这是mongoose纲要:
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(标签);
而且,当我收到一个错误,就是types错误TypeError: Cannot call method 'push' of undefined
。 我怎样才能推动我的模式标签数组内的标签数组?
感谢您的提前!
编辑:
这将是我想要的结果:
{ user: randomuser, imagen: [{ tags: ["one", "two", "three" }] }
而且,例如,如果有两个imagen对象:
{ user: randomuser, imagen: [{ tags: ["one", "two", "three"] }, { tags: ["four", "five", "six"] }] }
似乎错误可能是由于variables赋值中的不一致造成的。 所以创build了一个独立的例子来testing它的工作原理
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" }
希望这可以帮助。