2

ID を受け取り、その ID に対応する MongoDB データベースからオブジェクトを返す関数を備えた NodeJS アプリがあります。ID はモデルの _id (ObjectID) または external_id (文字列) のいずれかに一致する可能性があります。これは、id が _id または external_id に等しいオブジェクトを除外する必要があるためです。このコードを書きましたが、NodeJS で実行するとうまくいかないようですが、ターミナルの mongo で試してみると問題なく動作します。

myModel.findOne({$or: [{_id: my_id}, {external_id: my_id}]}, function (err, model) {
    ...
});

ターミナルで動作するので、2 つのモデル オブジェクトの異なるタイプに問題がある可能性があると思いますが、わかりません。my_id は文字列です。

提案をありがとう。マティアス

4

2 に答える 2

2

find は実際にはカーソルを返します。一致するレコードが1つだけの場合でも、カーソルを反復処理する必要があります。これを試してください:

myModel.find({$or: [{_id: my_id}, {external_id: my_id}]}).nextObject(function (err, model) {
    ...
}
于 2013-08-28T05:32:47.070 に答える
0

toArray() 関数を使用して、カーソルで取得した結果を配列に変換し、コードでより簡単に操作できます。

myModel.findOne({$or: [{_id: my_id}, {external_id: my_id}]}).toArray(function (err, model) { ... });

于 2018-12-13T10:11:44.150 に答える