1

したがって、「材料」の関係があり、それは単なる ObjectId の配列であるレシピ用のモデルがあります。mongo シェルで次のクエリを実行すると、正常に動作し、すべてのデータが返されます。

Example model :
{
"name": "...",    
"_id": ObjectId("530ca903746515c0161e6b9f"),    
"ingredients": [
    ObjectId("53069363ff7447a81a3a7a1d"),
    ObjectId("53069363ff7447a81a3a7a17")
 ]    
}

Query:
db.drink.find({"ingredients":{"$in":[ObjectId("53069364ff7447a81a3a7a87"), ObjectId("530fb948c1a3ff480d58e43c")]}});

ウォーターラインオームを介してsails.jsを使用すると、これをクエリする方法が実際にはありませんが、少なくとも私が見つけることができるGoogle検索を使用することはできません。したがって、ネイティブドライバーを使用しようとすると、次のようなものがあります-

var ings = new Array();
for (var i in req.body) {
  ings.push(new ObjectID(req.body[i].toString()));
}
Drink.native(function(err, collection){
  if(err){
    return res.send(err, 500);
  } else {
    collection.find({"ingredients":{"$in":ings}}).toArray(function(err, data){
      console.log(data);
    });
  }
});

問題は、コールバックで返されるデータ配列が常に空であることです。「ings」配列を確認すると、それはオブジェクト ID の配列であるため、データが返されない理由がわかりません。「find」関数でjsonオブジェクトを削除すると、すべてが返されます。Sails.jsを使用しているときに、このクエリがデータを返すようにする方法を知っている人はいますか?

4

1 に答える 1

0

上記のコードは実際に機能しています。ID がリレーション間で一致していない mongodb の内部データの問題でした。関係が再構築されたとき、すべてが正常に機能しています。

于 2014-02-28T20:51:31.797 に答える