在Mongoose Schema中的另一个数组内写一个数组

时间:2013-01-05 12:22:00

标签: javascript node.js mongoose

这是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"]

              }] 

 }

1 个答案:

答案 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" }

希望这有帮助。