繁体   English   中英

Mongoose 查询总是返回空数组

[英]Mongoose query always returns empty array

我试图做一个大于查询,但它总是返回一个空数组。

    const productSchema = require("./productsSchema");
const getProductsGreaterThan = async (minimum_id) => {
try{
    console.log(minimum_id);
    const productById = await productSchema.find({id: {$gt:minimum_id}});
    return productById
}
catch(err){
    console.error(err);
}
}

这是我的 controller:

if (req.params.minimum_id) {
    const productsById = await productsModel.getProductsGreaterThan(req.params.minimum_id);
    res.status(200).json(productsById);
}

它应该返回 ID 大于我在 req.params 中键入的 ID 的产品...

routes.get("/products/:minimum_id?",productRoutes.getProductsGreaterThan);

但是当我在 url 中这样写路由时,它给了我一个空数组 => http://localhost:3000/products/10 这段代码有什么问题? 我很困惑,因为像 find({}) 这样的其他查询有效。 我的mongoose版本是6.2.10。

如果您使用的是 mongoose 和 MongoDB,则正确的id格式为_id 所以你会做以下事情:

productSchema.find({_id: {$gt:minimum_id}})

解决了。 不知何故问题出在mongoDB的集合名称上。似乎它应该总是小写和复数。

我通过更改 MongoDB 表名解决了我的问题。 问题出在 mongoDB 的集合名称中。您的表名称应始终为小写和复数形式(这对我来说是最关键的事情)。 也许你可以试试这个。

暂无
暂无

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

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