gpt4 book ai didi

node.js - 通过 Node 连接到 MongoDB 后,`find()` 无法像 `findOne()` 一样工作

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:05 24 4
gpt4 key购买 nike

我熟悉如何从 Mongo shell 获取文档,但在通过 Node 连接时使用 find() 获取文档时遇到困难。

我现在得到的看起来像很多光标信息,但不是实际的文档。

我需要对以下代码进行哪些更改才能将实际文档记录到控制台以获取“结果”?

const config = require('./../../../configuration');
const url = config.get('MONGO_URL');
const dbName = config.get('MONGO_DATABASE');

const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient(url);

module.exports = async function getSchedules() {
let results;
return new Promise((resolve, reject) => {
client.connect(async function (err) {
if (err) return reject(err);
try {
const db = await client.db(dbName);
results = await db.collection('schedules').find();
} catch (error) {
return reject(error);
}
return resolve(results);
});
});
};

...这是我实际尝试获取文档的地方:

async function getSchedulesFromDB() {
await getSchedules().then((schedules => {
console.log('schedules: ', schedules); // expect result here
return schedules;
}));
}

当我在 findOne() 上使用相同类型的代码结构时,它起作用了。但这里使用 find() 时却并非如此。我缺少什么? find() 的工作方式与 findOne() 根本不同吗?

最佳答案

是的。 find() 返回一个必须迭代的游标。 findOne() 返回单个文档,而不是游标。如果您想要一组结果,则必须通过迭代游标来“自己构建”,例如:

results = [];
db.collection('schedules').find().forEach(function(d) { results.push(d); });

关于node.js - 通过 Node 连接到 MongoDB 后,`find()` 无法像 `findOne()` 一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58769383/

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