如何使用猫鼬获取数组而不是对象?

时间:2020-10-28 16:34:08

标签: arrays mongoose

我使用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]]);

我可以使用任何函数代替对象或其他猫鼬函数来创建数组吗?

1 个答案:

答案 0 :(得分:1)

更简单的方法是使用find,因为它总是返回一个数组。就您而言:

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

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


还有一个aggregate方法也可以返回一个数组,但通常用于一些高级查询。如果您的查询像您提供的一样简单,则这里不需要aggregate