我使用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]]);
我可以使用任何函数代替对象或其他猫鼬函数来创建数组吗?
答案 0 :(得分:1)
更简单的方法是使用find
,因为它总是返回一个数组。就您而言:
const products = await Product.findslug: req.params.id});
还请注意,if (products) {
现在将始终返回true
,因此您可能需要更新为if (products.length) {
(以防您需要至少1个文档)。
还有一个aggregate
方法也可以返回一个数组,但通常用于一些高级查询。如果您的查询像您提供的一样简单,则这里不需要aggregate
。