2013-05-05 2 views
0

사용할 수없는 길이 : 적법 좋은 성능을 이제 MongoJSMongoJS : 크기() 메서드 또는 그냥 Node.js를하고 MongoDB를 최신 버전과 Node.js를위한 드라이버 설치

을 내가 알아 시도 (높은로드 응용 프로그램) 데이터베이스에 레코드가있는 경우. 나는이 쿼리를 시도했지만 내가 얻을 수있는 모든 오류입니다 :

var query = db.users.find({ nickname: 'test' }).limit(1); 
console.log(query.size()); 
// or also 
// console.log(query.length); 
// => undefinied 

오류 :

TypeError: Object [object Object] has no method 'size' 

console.log(typeof query)를 통해 난 그냥 object를 얻을.

난 그냥 query를 기록 할 경우, 나는이 얻을 :

{ _readableState: 
    { highWaterMark: 16384, 
     buffer: [], 
     length: 0, 
     pipes: null, 
     pipesCount: 0, 
     flowing: false, 
     ended: false, 
     endEmitted: false, 
     reading: false, 
     calledRead: false, 
     sync: true, 
     needReadable: false, 
     emittedReadable: false, 
     readableListening: false, 
     objectMode: true, 
     ranOut: false, 
     awaitDrain: 0, 
     readingMore: false, 
     decoder: null } 
    readable: true, 
    domain: null, 
    _events: {}, 
    _maxListeners: 10, 
    _get: [Function] } 

나는 결과로 모든 시간이 얻을 항목이 존재 여부를 경우에도 마찬가지입니다.

+0

어디 당신은 당신이 전화를 할 수있을 것으로 기대하고'size' 방법에 대한 참조를보고있다? – JohnnyHK

+0

http://stackoverflow.com/questions/8389811/how-to-query-mongodb-to-test-if-an-item-exists – David

+0

인쇄가 'query'인 이유가 쿼리가 커서이기 때문에 이상하게 보입니다. 실제로 어떤 결과도 아닙니다. findOne을 사용하거나 query.hasNext()가 반환하는 것을 검사하여 문제를 해결할 수 있습니다 (false - 일치하는 항목 없음). node.js가 null을 리턴하는 cursor.nextObject()와 같을 것입니다. –

답변

0

current docssize 메서드에 대한 언급이 없습니다. count도 여기서 일 것 동안 대신, 당신은이 작업을 수행 할 findOne을 사용할 수

db.users.findOne({ nickname: 'test' }, function(err, doc) { 
    if (doc) { 
     // At least one matching doc exists 
    } else { 
     // No match found 
    } 
});