gpt4 book ai didi

javascript - 为什么 'find' 查询在 MongoDB 中返回一个 Query 对象?

转载 作者:行者123 更新时间:2023-11-30 11:00:53 24 4
gpt4 key购买 nike

我已经在 SO 看过很多答案,但没有一个能解决我的问题。

我目前正在使用 node、express 和 mongodb 创建一个项目。我从一个种子文件开始,将一些数据放入 mongodb:

var products = [
new ProductModel(data),
new ProductModel(data),
new ProductModel(data),
new ProductModel(data),
];

// Connecting to mongodb using mongoose.
mongoose.connect(config.mongodb.dsn, { useNewUrlParser: true })
.then(() => {
console.log("Successfully connected to MongoDB through Mongoose.");
})
.catch((error) => {
console.log("Error when connecting to MongoDB through Mongoose: " + error);
});

// Saving product instances to the product document in mongodb
var done = 0;
for (var i = 0; i < products.length; i++) {
products[i].save((error, result) => {
done++;
if (done == products.length) {
// Disconnecting...
console.log("All products have been loaded into mongodb. Disconnecting now...");
mongoose.disconnect();
}
});
}

然后,我试图在我的路线文件中检索这些数据,使用:

router.get('/', function(req, res, next) {
const products = ProductModel.find();
console.log(products);
res.render('shop/index', { products });
});

但是,我在控制台上记录结果,唯一出现的结果是一个如下所示的查询对象:

Query {
_mongooseOptions: {},
_transforms: [],
_hooks: Kareem { _pres: Map {}, _posts: Map {} },
_executionCount: 0,
mongooseCollection:
NativeCollection {
(...)
_traceFunction: undefined,
'$useProjection': true }

我需要检索数据库中的产品。我做错了什么?

最佳答案

一切都按预期执行。 find() 根据文档返回一个 Query 对象:https://mongoosejs.com/docs/api.html#model_Model.find

如果你想让它返回值,只需将它转为 await 并调用 exec 以获得 promise :

router.get('/', async function(req, res, next) {
const products = await ProductModel.find().exec();
console.log(products);
res.render('shop/index', { products });
});

关于javascript - 为什么 'find' 查询在 MongoDB 中返回一个 Query 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57776625/

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