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模型对象的方法。