gpt4 book ai didi

node.js - Mongoose 找到返回的奇怪对象

转载 作者:可可西里 更新时间:2023-11-01 09:29:55 24 4
gpt4 key购买 nike

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

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 查看文档。我知道这是由于某种异步问题引起的,但是我不确定如何解决它。此外,.findOne() 的注释掉的代码似乎可以在上面的代码中完全正确地提取数据。

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

感谢您的帮助!

最佳答案

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

当您确定您的查询永远不会返回多个对象时(例如在这种情况下,您通过始终唯一的 _id 字段进行查询),您可以使用 db.collection(' Tweet').findOne( 将只返回该对象而无需额外的间接层。

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

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

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

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

关于node.js - Mongoose 找到返回的奇怪对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com