1

我在 node.js 中将 mongodb 与 mongo-native 包一起使用,并且我试图在名为“archive”的字段中排除包含值 1 的文档,并且我不断得到不合适的结果。

这是我在咖啡脚本中的代码

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 回答