我在node.js中使用mongodb和mongo-native包,并且我试图在名为“archive”的字段中排除包含值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"
}
有什么问题?
答案 0 :(得分: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,我有点天生的异教徒:)