0

これは私のスキーマです:

var userschema = new mongoose.Schema({

  user: String,
  imagen: [{ 

              title: String,
              name: String,
              path: String,

           }]

});

そして私はこれを試しています:

 usermodel.findOne({ user: req.session.user }, function(err, user){

     var img = user.imagen[user.imagen.length];

     img.title = req.body.title;

     user.save(function(err){

        if(err) { throw err; }

     });

 });

コンソールはを返しますTypeError: Cannot set property 'title' of undefined。だから、なぜ未定義なのかわかりません。新しい配列要素を作成してから、その配列要素のプロパティを設定する必要があると思いますが、その方法はありません。これに対する解決策は...?

よろしくお願いします!

4

2 に答える 2

2

どの配列にもそのような項目はありません:anyArray[anyArray.length]。あなたはanyArray[anyArray.length - 1]私が思うに使用する必要があります。

于 2013-01-04T14:40:34.710 に答える
1

user.imagen配列の最後から外れたため、未定義です。要素しかないuser.imagen.lengthため、JavaScriptの0ベースの配列インデックスでは、最後の要素はインデックスにありますuser.imagen.length-1

新しい要素を追加しようとしている場合:

usermodel.findOne({ user: req.session.user }, function(err, user){
    user.imagen.push({ title: req.body.title });
    user.save(function(err){
        if(err) { throw err; }
    });
});
于 2013-01-04T14:40:56.643 に答える