2013-07-11 43 views
1

我與蒙戈本地包裝的Node.js和IM試圖排除其中包含一個名爲「存檔」字段中的值1的文檔使用MongoDB的,我一直得到的結果是不適當。MongoDB的多個條件,返回錯誤的結果

這是我在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

_id是你期待的那個嗎? – CasualT

+0

@CasualT是的..完全相同的ID。 – user1621223

回答

0

您需要添加一些括號,以確保該archive: 0給出參數,正確的函數。你現在所擁有的是什麼相同的:

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

所以archive: 0參數發送到​​和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,我有點天生的異端:)

+2

大聲笑,我想在閱讀原始問題時的第一件事是「嘖嘖,我想知道咖啡腳本中沒有括號會導致錯誤的頻率」。 – CasualT

+0

謝謝你們,我真的不習慣coffeescript .. – user1621223

+1

@CasualT:可能比他們在Ruby中做得更多,這就是爲什麼我不把它們當作任何語言的可選項:) –