1

node.js で mongo-native パッケージと共に mongodb を使用し、「アーカイブ」というフィールドに値 1 を含むドキュメントを除外しようとしていますが、適切でない結果が得られ続けています。

これがcoffeescriptの私のコードです

collection.findOne { _id : new mongo.BSONPure.ObjectID req.params.id ,  "archive" : 0 } ,   (erreur, resultat) ->
       if erreur
          console.log "Erreur: aucun contact de ce nom." + erreur
       else
          res.send resultat
          res.end()

そして、それは私にこれを返し続けます:

{
  "_id": "51ddb907ae3267d6154a3e64",
  "archive": 1,
  "nom": "G",
  "prenom": "Maxim"
}

なにが問題ですか ?

4

1 に答える 1

0

archive: 0引数が正しい関数に渡されるように、いくつかの括弧を追加する必要があります。あなたが今持っているものはこれと同等です:

collection.findOne({ _id : new mongo.BSONPure.ObjectID(req.params.id,  "archive" : 0) } ,   (erreur, resultat) -> ...

そのため、archive: 0引数がに送信されnew mongo.BSONPure.ObjectId、引数が表示されfindOneます_id

私はあなたが言いたいと思う:

collection.findOne { _id : new mongo.BSONPure.ObjectID(req.params.id),  "archive" : 0 } ,   (erreur, resultat) -> ...

または、追加の変数を使用して混乱を減らします。

id = new mongo.BSONPure.ObjectID req.params.id
collection.findOne { _id : id, archive: 0 }, (erreur, resultat) -> ...

私はすべての CoffeeScript 関数呼び出しに括弧を付けて、何が起こっているかを視覚的に明らかにする傾向があります。OTOH、私は少し生来の異端者です:)

于 2013-07-11T20:20:11.697 に答える