我使用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]]));
我可以使用任何函数代替对象或其他猫鼬函数来创建数组吗?
更简单的方法是使用find
它,因为它总是返回一个数组。在您的情况下:
const products = await Product.findslug: req.params.id});
还要注意,if (products) {
现在它总是会返回true
,因此您可能需要更新到if (products.length) {
(如果需要至少1个文档)。
也有aggregate
可用的方法,该方法也返回一个数组,但通常用于一些高级查询。如果您的查询与您提供的一样简单,则不需要aggregate
此处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句