2013-02-15 55 views
0

我剛剛把我的督促服務器上我的web應用程序,我發現了一個令人驚訝的問題:

var username = 'foo'; 
var User = this.db.model('User', UserSchema); 
User.findOne({ $or: [ { username: username }, { email: { value: username } } ] }, 'id', function(err, Doc) { 
    if (err) { 
    console.log(err); 
    }else if (Doc) { 
    console.log('OK'); 
    }else { 
    console.log('Any result'); 
    } 
}); 

這完全相同的代碼工作在我的本地主機,但不我的prod服務器(我在我的生產服務器上的else條件以及本地主機上的else if (Doc))。

我在findOne調用之前打印了我的變量username,並且我手動檢查了此用戶名確實存在。

如果我放棄$or運營商,只適用於username條件,它的工作原理!這是運營商對此故障負責的證明。

我在兩個環境("mongoose": ">=3.5.4")上都以同樣的方式更新我的節點模塊。

我的MongoDB的版本是兩個environements相同:

db version v2.0.4, pdfile version 4.5 
git version: nogitversion 

我的本地服務器:unbuntu。 我的產品服務器:debian

我們如何解釋?

謝謝。

+0

是生產服務器上什麼版本的MongoDB? – JohnnyHK 2013-02-15 19:45:15

+0

兩者都是一樣的:'db版本v2.0.4,pdfile版本4.5 git版本:nogitversion ' – Ludo 2013-02-15 19:51:25

+0

'id'函數是怎麼回事?錯字? – JohnnyHK 2013-02-15 19:58:32

回答

0

我已經升級的MongoDB的v2.2.3我督促服務器上,它的工作原理...

相關問題