【问题标题】:How do i get an array instead of an object using mongoose?如何使用 mongoose 获取数组而不是对象?
【发布时间】:2021-02-11 01:57:03
【问题描述】:

我使用 Mongoose 通过这个 get 函数从我的数据库中获取我的数据。

router.get("/:id", async (req, res)=> {
  const products = await Product.findOne({slug: req.params.id});
  if (products) {
    res.send(products);
  } else {
    res.status(404).send({message:"product not found"})
  } 
});

输出似乎是一个对象。但是我需要一个数组,因为我在进一步的代码中使用了 slice() 方法。

我尝试了什么:var ready = Object.keys(products).map((key) => [Number(key), products[key]]);

有没有什么函数可以用来创建一个数组而不是对象或另一个 mongoose 函数来获取一个数组?

【问题讨论】:

    标签: arrays mongoose


    【解决方案1】:

    更简单的方法是使用find,因为它总是返回一个数组。在你的情况下:

    const products = await Product.findslug: req.params.id});
    

    另请注意,if (products) { 现在将始终返回 true,因此您可能需要更新为 if (products.length) {(以防您至少需要 1 个文档)。


    还有aggregate 方法可用,它也返回一个数组,但通常它用于更高级的查询。如果您的查询与您提供的一样简单,则此处不需要aggregate

    【讨论】:

    • 总有一个简单的方法......谢谢!
    猜你喜欢
    • 2018-07-08
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2020-03-01
    • 2014-10-24
    相关资源
    最近更新 更多