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(タグ);

そして、私は言うエラーを受け取りましたTypeError: Cannot call method 'push' of undefined。スキーマのタグの配列内にタグの配列をプッシュするにはどうすればよいですか?

よろしくお願いします!

編集:

そして、これは私が望む結果になります:

 {

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

 }

たとえば、2 つの 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 に答える