2015-09-19 106 views
0

我知道這是一個非常基本的問題,但這裏是問題所在。 我正在關注doc在mongodb中查找查詢不返回數據

我使用的是mongodb,express和node。

我有一個用戶數據收集用戶。我想在所有用戶的網址'/'上輸入json;

var users; 
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) { 
    if(err) { return console.dir(err); } 
    users = db.collection('users'); 
}); 


app.get('/', function (req, res) { 
    users.find({}, function (err, docs) { 
    res.send(JSON.stringify(docs)); 
    }); 
}); 

但docs對象包含很多東西,但不是所有的用戶。 我如何獲得所有用戶?

Readable { 
    connection: null, 
    server: null, 
    disconnectHandler: 
    { s: { storedOps: [], storeOptions: [Object], topology: [Object] }, 
    length: [Getter] }, 
    bson: {}, 
    ns: 'test.users', 
    cmd: 
    { find: 'test.users', 
    limit: 0, 
    skip: 0, 
    query: {}, 
    slaveOk: true, 
    readPreference: { preference: 'primary', tags: undefined, options: undefined } }, 
    options: 
    { skip: 0, 
    limit: 0, 
    raw: undefined, 
    hint: null, 
    timeout: undefined, 
    slaveOk: true, 
    readPreference: { preference: 'primary', tags: undefined, options: undefined }, 
    db: 
     EventEmitter { 
     domain: null, 
     _events: {}, 
     _eventsCount: 0, 
     _maxListeners: undefined, 
     s: [Object], 
     serverConfig: [Getter], 
     bufferMaxEntries: [Getter], 
     databaseName: [Getter], 
     options: [Getter], 
     native_parser: [Getter], 
     slaveOk: [Getter], 
     writeConcern: [Getter] }, 
    promiseLibrary: [Function: Promise], 
    disconnectHandler: { s: [Object], length: [Getter] } }, 
    topology: 
    EventEmitter { 
    domain: null, 
    _events: 
     { reconnect: [Function], 
     timeout: [Object], 
     error: [Object], 
     close: [Function], 
     destroy: [Object] }, 
    _eventsCount: 5, 
    _maxListeners: undefined, 
    s: 
     { options: [Object], 
     callbacks: [Object], 
     logger: [Object], 
     state: 'connected', 
     reconnect: true, 
     reconnectTries: 30, 
     reconnectInterval: 1000, 
     emitError: true, 
     currentReconnectRetry: 30, 
     ismaster: [Object], 
     readPreferenceStrategies: undefined, 
     authProviders: [Object], 
     id: 1, 
     tag: undefined, 
     disconnectHandler: [Object], 
     wireProtocolHandler: {}, 
     Cursor: [Object], 
     bsonInstance: {}, 
     bson: {}, 
     pool: [Object], 
     serverDetails: [Object] }, 
    name: [Getter], 
    bson: [Getter], 
    wireProtocolHandler: [Getter], 
    id: [Getter] }, 
    cursorState: 
    { cursorId: null, 
    cmd: 
     { find: 'test.users', 
     limit: 0, 
     skip: 0, 
     query: {}, 
     slaveOk: true, 
     readPreference: [Object] }, 
    documents: [], 
    cursorIndex: 0, 
    dead: false, 
    killed: false, 
    init: false, 
    notified: false, 
    limit: 0, 
    skip: 0, 
    batchSize: 1000, 
    currentLimit: 0, 
    transforms: undefined }, 
    callbacks: null, 
    logger: { className: 'Cursor' }, 
    _readableState: 
    ReadableState { 
    objectMode: true, 
    highWaterMark: 16, 
    buffer: [], 
    length: 0, 
    pipes: null, 
    pipesCount: 0, 
    flowing: null, 
    ended: false, 
    endEmitted: false, 
    reading: false, 
    sync: true, 
    needReadable: false, 
    emittedReadable: false, 
    readableListening: false, 
    defaultEncoding: 'utf8', 
    ranOut: false, 
    awaitDrain: 0, 
    readingMore: false, 
    decoder: null, 
    encoding: null }, 
    readable: true, 
    domain: null, 
    _events: {}, 
    _eventsCount: 0, 
    _maxListeners: undefined, 
    s: 
    { numberOfRetries: 5, 
    tailableRetryInterval: 500, 
    currentNumberOfRetries: 5, 
    state: 0, 
    streamOptions: {}, 
    bson: {}, 
    ns: 'test.users', 
    cmd: 
     { find: 'test.users', 
     limit: 0, 
     skip: 0, 
     query: {}, 
     slaveOk: true, 
     readPreference: [Object] }, 
    options: 
     { skip: 0, 
     limit: 0, 
     raw: undefined, 
     hint: null, 
     timeout: undefined, 
     slaveOk: true, 
     readPreference: [Object], 
     db: [Object], 
     promiseLibrary: [Function: Promise], 
     disconnectHandler: [Object] }, 
    topology: 
     EventEmitter { 
     domain: null, 
     _events: [Object], 
     _eventsCount: 5, 
     _maxListeners: undefined, 
     s: [Object], 
     name: [Getter], 
     bson: [Getter], 
     wireProtocolHandler: [Getter], 
     id: [Getter] }, 
    topologyOptions: 
     { socketOptions: {}, 
     auto_reconnect: true, 
     host: 'localhost', 
     port: 27017, 
     cursorFactory: [Object], 
     reconnect: true, 
     emitError: true, 
     size: 5, 
     disconnectHandler: [Object], 
     bson: {}, 
     messageHandler: [Function], 
     wireProtocolHandler: {} }, 
    promiseLibrary: [Function: Promise], 
    currentDoc: null }, 
    timeout: false, 
    sortValue: undefined, 
    readPreference: { preference: 'primary', tags: undefined, options: undefined } } 

回答

2

與正在使用

當你做.find它會回報你一個光標,在光標可以循環cursor.each,但你想做什麼大多數情況下是把MongoDB的模塊它變成一個數組。

users.find({}).toArray(function(err, results){ 
    console.log(results); 
}); 

這是文檔說明什麼,我只是寫:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html#making-queries-with-find

+0

感謝。我應該使用貓鼬嗎? – BoumTAC

+0

如果你需要'ORM'類庫,你可以使用貓鼬。有很多貓鼬水線(我更喜歡,因爲你可以一起使用不同的數據庫)等等。通常,如果我做簡單的事情,我只使用mongodb模塊,而如果我需要一個更大的結構,我使用水線 – DevAlien