我熟悉如何从Mongo Shell获取文档,但是在find()
通过Node连接时很难使用文档。
我现在得到的cursor
信息看起来很多,但不是实际的文档。
我需要对以下代码进行哪些更改,以便将实际文档记录到控制台以获取“结果”?
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); });
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句