1

NodeJS と MongoDB を使用します。

mongo クエリがあり、クエリのプロパティの一部を、前のクエリの結果である既存のオブジェクトに割り当てようとしています。

「TypeError: 未定義のプロパティ 'property1' を設定できません」というメッセージが表示されます

enter code here

   for(var i=0; i<data.data.length; i++){
      if(data.data[i].a){
        var c = data.data[i].a.toString();
        SOMETHING.METHOD(c, function(user){
          console.log(JSON.stringify(user, null, 2));
          data.data[i].property1 = user.property1;
          data.data[i].property2 = user.property2;
          data.data[i].property3 = user.property3;

        });
      }else{
          data.data[i].property1 = "not available";
          data.data[i].property2 = "not available";
          data.data[i].property3 = "not available";
      }

奇妙なことに、property1 に "not available" を割り当ててもエラーは発生しません。user.property1 toString() を変更しようとしましたが、解決しませんでした。ある割り当てが機能し、他の割り当てが機能しない理由がわかりません。

4

1 に答える 1

1

解決しました。古典的なnewb nodejsの間違い。非同期であるため、DB クエリが結果を返す前にループが終了したため、関数のその部分が実行されるまでに、値を追加するループはもうありませんでした。

于 2013-09-24T21:57:33.143 に答える