mongoose发现返回奇怪的对象

我目前的问题是与db.collection.find()mongoose命令。 我对mongoose / mongodb比较陌生,但是我已经掌握了它的概念。 这里是我一直试图运行的testing代码:

mongoose.connect(url); function main() { var db = mongoose.connection; db.on('open', function() { db.collection('Tweet').find({id: 631460910368956400}, function (err, data){ console.log(data); }) /*var coll = db.collection('Tweet'); db.collection('Tweet').findOne({id: 631460910368956400},function (err, ret) { if(err) console.log(err); console.log(ret['id']); //db.close(); });*/ }); } main(); 

从非注释字段返回的数据是一个奇怪的对象:

 { connection: null, server: null, disconnectHandler: { s: { storedOps: [], storeOptions: [Object], topology: [Object] }, length: [Getter] }, bson: {}, ns: 'TEST.Tweet', cmd: { find: 'TEST.Tweet', limit: 0, skip: 0, query: {}, slaveOk: false }, options: { skip: 0, limit: 0, raw: undefined, hint: null, timeout: undefined, slaveOk: false, db: { domain: null, _events: [Object], _maxListeners: undefined, s: [Object], serverConfig: [Getter], bufferMaxEntries: [Getter], databaseName: [Getter], 

等等等等,它会持续更长的时间。

IP地址是成功连接的远程连接。 我可以做像添加和删除文件,但实际上不能从JavaScript中查看文件。 我知道这是由于某种asynchronous问题,但我不知道如何解决它。 另外,.findOne()注释掉的代码似乎在上面的代码中完全正确地提取数据。

.find()函数的代码会有什么问题? 解释为什么当前的数据检索错误也会很大。

谢谢你的帮助!

您收到的对象是一个Cursor ,它是用于检索实际结果的对象。

当你确定你的查询永远不会返回多个对象时(比如在这种情况下,通过总是唯一的_id字段进行查询),可以使用db.collection('Tweet').findOne(只返回那个对象间接的附加层。

但是,当您的查询可能会返回多个文档时,您需要使用游标。 要parsing游标,可以使用cursor.toArray将其转换为文档数组:

  db.collection('Tweet').find({}, function (err, cursor){ cursor.toArray().forEach(function(doc) { console.log(doc); }); }) 

这是最简单的版本。 有关游标的更多信息,请参阅上面链接的文档。

顺便说一句:到目前为止,你只使用本地驱动程序的function。 当你想使用Mongoose查询对象时,你可能想要使用Mongoose模型对象的方法。