2017-01-22 3 views
1

나는 주어진 ID를 가진 사용자가 없다면 새로운 사용자를 생성하기 위해 최근에 인증 시스템을 사용하고있다. 또는은 기존 사용자 신분증. 나는 이미 내가있는 기능 existsWithId (ID)를 만든 경우 내 보낸 몽구스 모델 mongoose.model('User', UserSchema);몽구스 스키마 기능을 내 보낸 몽구스 모델 내에서 사용

인 사용자와

User.count({_id: id}, function (err, count){ 
    if(count > 0){ 
     // User exists, continue with loading data 
    } else { 
     // User does not exist, create one 
    } 
    }); 

를 사용하여 ID를 가진 사용자가 존재하는지 여부를 반환 할 수 있다고 생각 내 app.js 이제 은 완벽하게 작동합니다. (앞에서 언급 한 코드 이 완벽하게 작동합니다.)이 함수를 내 user.js 모델 (이 코드는 Mongoose/MongoDB 코드) 대신 특정 모델에 대해서만 사용할 수 있습니다. 나는 내 app.js.의 내부를 실행하면하지만,

UserSchema.statics.existsWithId = function(id) { 
    this.count({_id: id}, function (err, count){ 
    return count > 0; 
    }); 
} 

또는 이와 유사한 방법을 사용하여,이 중 단지 정의되지 않은 또는 오류를 반환합니다 그렇게하려고 할 때마다

참고 :이 단순하거나 어리석은 질문의 일종 경우 는 미안하지만 몽구스와 DB 관리를 고려 꽤 새로운 오전과 내가 JS와 일부 경험을 할 동안, 나는 정확히 아니다 전문가.

질문에 답변하기 위해 제공된 추가 코드가 필요한 경우 언제든지 물어보십시오. 또한, 나는 아직 담당자의 답변을 + 수는 없지만, 나는 항상 다시이 같은 결과를 얻을에 당신이 콜백을 제공 할 수 있도록

답변

0

귀하의 existsWithId 방법은 비동기 적으로 값을 반환 그들을 :) 감사 :

UserSchema.statics.existsWithId = function(id, cb) { 
    this.count({ _id: id }, function(err, count) { 
     cb(err, count > 0); 
    }); 
} 

User.existsWithId("5882c3be5aad09028d4d8b46", function(err, res) { 
    console.log(res); 
}); 
+0

잘 작동합니다. 감사합니다. 하나의 질문. 나는 몽구스의 전체 "findByID"개념을 아직 이해하지 못한다 : 어떻게'user' 객체를 현재의 것으로 설정하겠습니까 ('user = User.findOne ({_ id : id});'),하지만 (편집 : 그냥 기억, 콜백, arrgh) – Maxx2709

+0

이것은 비동기, 콜백과 결과를 얻을 수 있습니다 :'User.findOne ({_ id : id}, function (err, res) {console.log (res); var user = res;});'. exec()를 호출하지 않으면 콜백 함수를 지정하지 않으면 다음을 참조하십시오. http://stackoverflow.com/questions/31549857/mongoose-what-does-the-exec-function-do –

+0

이것은 웬일인지, 나는'존재한다 '와 비슷한 부울만을 반환 할 것이다. 여기에 꽤 명백한 오류가있을 수 있지만, 지금 당장은 찾을 수없는 것 같습니다. 함수의 전체 코드는 다음과 같습니다 : http://pastebin.com/2FCXkrF4 – Maxx2709