1
最近我一直在研究一個認證系統,如果沒有給定ID的用戶存在,應該創建一個新用戶或加載一個存在ID。我也已經想通了,你可以通過使用在導出的貓鼬模型中使用貓鼬綱要函數
User.count({_id: id}, function (err, count){
if(count > 0){
// User exists, continue with loading data
} else {
// User does not exist, create one
}
});
與用戶是導出的貓鼬型號mongoose.model('User', UserSchema);
在ID返回用戶是否存在與如果我創建了一個功能existsWithId(ID)我現在app.js,它會工作完全正常,但我想搬到這個功能我user.js的模型(其中包含貓鼬/ MongoDB的代碼(由前面提到的代碼工作完全正常事實判斷) ),以便我只爲特定的模型使用它。每當我嘗試這樣做,通過使用
UserSchema.statics.existsWithId = function(id) {
this.count({_id: id}, function (err, count){
return count > 0;
});
}
或類似的方法,但是,它要麼只返回不確定或錯誤,一旦我運行它,我app.js.內
注:對不起,如果這是一種簡單的甚至是愚蠢的問題,但我非常新考慮與貓鼬DB管理,而我有與JS一些經驗,我不完全是專業。
如果你們需要提供回答的問題,隨時問我,我會做到這一點額外的代碼。此外,我不能代表+解答,但我一直很欣賞「時間:)
很好地工作,謝謝!一個問題,但。我並沒有真正理解Mongoose的整個「findByID」概念:我現在如何設置'user'對象到現有的對象(我嘗試了'user = User.findOne({_id:id});',但是) [編輯:我只記得,它是完全相同的東西(回調,arrgh)] – Maxx2709
這是異步的,你可以用回調得到結果:'User.findOne({_id:id},函數(err,res){console.log(res); var user = res;});'。如果你不指定回調函數,它將不會執行,除非你調用exec(),請參閱:http://stackoverflow.com/questions/31549857/mongoose-what-does-the-exec-function-do –
這,出於某種原因,只會返回我認爲類似於「存在」的布爾值。我可能在這裏有一個非常明顯的錯誤,但我現在似乎無法找到它。下面是該函數的完整代碼:http://pastebin.com/2FCXkrF4 – Maxx2709