2

ジェイド テンプレート コード

    each member in team.members
      if member == user._id
       - flag=true;  

ここで、team は Mongo DB のコレクション「teams」内のドキュメントであり、「members」は配列を値として持つプロパティです。

ここで #{member} の値はそれぞれ53fecc27bace957811633dcc5412a08fa51c105017b9f1feです。どちらもオブジェクト ID です。

#{user.id} の値は53fecc27bace957811633dcc

ただし、この比較では false が返され、フラグが true に設定されることはありません。なぜそうなのですか?

4

2 に答える 2

1

MongoDB objectId はおそらく単純な文字列ではありません。docsによると、それらは BSON タイプです。member と user._id が 2 つの異なるオブジェクトである可能性があるため、文字列表現が同じであっても、「参照が等しい」比較が失敗します。

これに関連して、アプリケーションで MongoDB が生成したオブジェクト ID を使用することはお勧めできません。より堅牢な設計は、すべてのレコード タイプに対して独自の識別子を持つことです。

于 2014-09-26T14:08:03.510 に答える