Express如何从mongodb获取所有数据

时间:2016-05-15 11:16:30

标签: node.js mongodb

我是MEAN Stack的新手,当我在获得响应后查询mongo时

db.dashboard.find()

[{
    "_id" : ObjectId("57384b402affdfa8aaef44d7"),
    "file" : "/fire.wma",
    "result" : "Ap",
    "sentenceId" : 40,
    "synced" : 1,
    "iscorrect" : "no",
    "user_id" : ObjectId("57384a577c5176914524bd5c")
}, {    
    "_id" : ObjectId("57384e3fbb5e9f33f7f0150e"),
    "file" : "/check.wma",  
    "result" : "AM",    
    "sentenceId" : 90,  
    "synced" : 0,
    "iscorrect" : "yes",
    "user_id" : ObjectId("57384a577c5176914524bd5c") 
}]

仪表板集合中有2个对象

我试图在快递中做同样的事情,但我无法得到理想的结果

 function getById(_id) {
    var deferred = Q.defer();
    var dashboard = db.collection('dashboard');

    db.collection('dashboard').find({user_id : ObjectId(_id)}, function (err, user) {
        console.log(user)
        console.log(_id)

        if (err) deferred.reject(err);

        if (user) {
            // return user (without hashed password)
            deferred.resolve(_.omit(user, 'hash'));
        } else {
            // user not found
            deferred.resolve();
        }
    });

    return deferred.promise;
}

我没有从Mongodb获得价值,而是获得像

这样的价值观
Readable {
  pool: null,
  server: null,
  disconnectHandler:
   { s: { storedOps: [], storeOptions: [Object], topology: [Object] },
     length: [Getter] },
  .........
  .........

任何有关从mongodb获取所有值的帮助都非常感谢。

预期输出应该是从mongodb查询的输出

1 个答案:

答案 0 :(得分:1)

查找返回cursor,然后您需要toArray才能获得结果:

 function getById(_id) {
    var deferred = Q.defer();
    var dashboard = db.collection('dashboard');

    db.collection('dashboard')
    .find({user_id : ObjectId(_id)})
    // *****
    .toArray(function (err, user) {
        console.log(user)
        console.log(_id)

        if (err) deferred.reject(err);

        if (user) {
            // return user (without hashed password)
            deferred.resolve(_.omit(user, 'hash'));
        } else {
            // user not found
            deferred.resolve();
        }
    });

    return deferred.promise;
}