繁体   English   中英

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

[英]Why is the 'find' query returning a Query object in MongoDB?

我已经在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 });
});

但是,我是console.logging结果在我的终端上,唯一的结果是查询对象,如下所示:

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 });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM