[node.js] 모든 몽구스 모델을 얻는 방법?


Answers

코드가 작동하지 않는 이유 는 개수 함수가 비동기 적이기 때문에 동기식으로 값을 반환하지 않기 때문입니다.

다음은 사용 예입니다.

userModel.count({}, function( err, count){
    console.log( "Number of users:", count );
})
Question

데이터가 저장된 모델 수를 어떻게 알 수 있습니까? Model.count() 메서드가 있지만 작동하지 않는 것 같습니다.

var db = mongoose.connect('mongodb://localhost/myApp');
var userSchema = new Schema({name:String,password:String});
userModel =db.model('UserList',userSchema);        
var userCount = userModel.count('name');

userCount 는 Object이며, 호출 된 메소드는 실제 count 얻을 count 있습니까?

감사




전에 말했듯이, 코드는 원래대로 작동하지 않습니다. 그 해결책은 콜백 함수를 사용하는 것이지만 '콜백 지옥'으로 이동한다고 생각하면 '약속'을 검색 할 수 있습니다.

콜백 함수를 사용하는 가능한 해결책은 다음과 같습니다.

//DECLARE  numberofDocs OUT OF FUNCTIONS
     var  numberofDocs;
     userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection

쿼리를 기반으로 문서 수를 검색하려면 다음을 수행 할 수 있습니다.

 userModel.count({yourQueryGoesHere}, setNumberofDocuments);

setNumberofDocuments는 분리 된 함수입니다.

var setNumberofDocuments = function(err, count){ 
        if(err) return handleError(err);

        numberofDocs = count;

      };

이제 getFunction을 사용하여 문서의 수를 어디서나 얻을 수 있습니다.

     function getNumberofDocs(){
           return numberofDocs;
        }
 var number = getNumberofDocs();

또한 콜백을 사용하여 동기식 내부에서이 비동기 함수를 사용합니다 (예 :

function calculateNumberOfDoc(someParameter, setNumberofDocuments){

       userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection

       setNumberofDocuments(true);


} 

희망은 다른 사람들을 도울 수 있습니다. :)




Links