mLab:查找获取db对象而不是记录的所有用户

时间:2016-04-27 06:46:53

标签: javascript node.js mongodb express mlab

我明确的应用程序我使用mLab数据库如果我只找到一条记录就可以了,但是当我要从数据库中找到用户列表时,它会给我这样的回复。

Query
let User = app.db.collection("User");
User.find((err, users) => {
   if (err) { return err; }
   if (users) {
      return res.json({ users: users});
   }
});

我得到了像

这样的回复
Readable {  
    pool: null, 
    server: null,  
    disconnectHandler: { s: { storedOps: [], storeOptions: [Object], topology: [Object] },
    length: [Getter] },   bson: {},   ns: 'hs-cloud.User',   cmd:     { find: 'hs-cloud.User',
    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] },
    promiseLibrary: [Function: Promise],
    disconnectHandler: { s: [Object], length: [Getter] } },   topology:     EventEmitter {
    domain: null,
    _events: 
    { reconnect: [Function],
    timeout: [Object],
    error: [Object],
    close: [Function],
    destroy: [Object],
    serverDescriptionChanged: [Function],
    serverHeartbeatStarted: [Function],
    serverHeartbeatSucceeded: [Function],
    serverHearbeatFailed: [Function],
    serverOpening: [Function],
    serverClosed: [Function],
    topologyOpening: [Function],
    topologyClosed: [Function],
    topologyDescriptionChanged: [Function] },
    _eventsCount: 14,
    _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: 3,
    topologyId: -1,
    tag: undefined,
    disconnectHandler: [Object],
    monitoring: false,
    haInterval: 10000,
    wireProtocolHandler: {},
    Cursor: [Object],
    bsonInstance: {},
    inquireServerStateTimeout: null,
    bson: {},
    pool: [Object],
    isMasterLatencyMS: 138,
    inTopology: false,
    serverDetails: [Object],
    serverDescription: null,
    topologyDescription: null },
    hashedName: '1309e35791f04f1f4fc35d5e683e81d350dd04f4',
    name: [Getter],
    bson: [Getter],
    wireProtocolHandler: [Getter],
    id: [Getter] },   cursorState:     { cursorId: null,
    cmd: 
    { find: 'hs-cloud.User',
    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: 'hs-cloud.User',
    cmd: 
    { find: 'hs-cloud.User',
    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: 14,
    _maxListeners: undefined,
    s: [Object],
    hashedName: '1309e35791f04f1f4fc35d5e683e81d350dd04f4',
    name: [Getter],
    bson: [Getter],
    wireProtocolHandler: [Getter],
    id: [Getter] },
    topologyOptions: 
    { socketOptions: {},
    auto_reconnect: true,
    host: 'ds030829.mlab.com',
    port: 30829,
    cursorFactory: [Object],
    reconnect: true,
    emitError: true,
    size: 5,
    disconnectHandler: [Object],
    bson: {},
    messageHandler: [Function],
    wireProtocolHandler: {} },
    promiseLibrary: [Function: Promise],
    currentDoc: null },   timeout: false,   sortValue: undefined
}

如果我尝试查找单个记录,则返回具有匹配条件的记录

User.findOne({ username: 'abc123' }, (err, user) => {
      if (err) { return next(err); }
      if (!user) {
        return next(null, false, {
          message: "Incorrect username."
        });
      }

我已经像这样配置mongo连接

return new Promise((resolve, reject) => {

MongoClient.connect('mongodb://<username>:<password>@ds033829.mlab.com:33829/my-cloud', (err, database) => {
  let db = database;
  if (err) {
    return reject(err);
  }
  return resolve(db);
});

});

这个db我存储到我的快递应用程序中 喜欢

  • app.db = db;

任何想法的朋友我错过了什么我看到mLab docs那里的查询是相同的但是我得到的东西是这样的。

谢谢。

1 个答案:

答案 0 :(得分:0)

似乎findOne()正在返回文档,但find()正在返回游标。

 var cursor = User.find();
   // Execute the each command, triggers for each document
   cursor.forEach(function(doc) {
      console.log(doc);
   }, function(err) {
      console.log(err);
   });