1

这是猫鼬模式:

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。如何将我的标签数组推送到我的架构的标签数组中?

谢谢提前!

编辑:

这将是我想要的结果:

 {

     user: randomuser,
     imagen: [{
                tags: ["one", "two", "three"
              }] 

 }

并且,例如,如果有两个 imagen 对象:

  {

     user: randomuser,
     imagen: [{
                tags: ["one", "two", "three"]
              },
              {

                tags: ["four", "five", "six"]

              }] 

 }
4

1 回答 1

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

希望这可以帮助。

于 2013-01-05T15:31:29.510 回答