skip to Main Content

Im trying to make a greater than query but it always returns an 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);
}
}

This is my controller:

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

It should return the products with an ID greater than what i type in the req.params…

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

But when i write the route like this in the url it gives me an empty array => http://localhost:3000/products/10 What is wrong with this code? Im very confused, because other queries like find({}) work. My mongoose version is 6.2.10.

3

Answers


  1. Chosen as BEST ANSWER

    Solved. Somehow the problem was in the name of the collection of mongoDB. It seems it should be always in lower-case and plural.


  2. If you are using mongoose and MongoDB the correct id format is _id.
    So you would do the following:

    productSchema.find({_id: {$gt:minimum_id}})
    
    Login or Signup to reply.
  3. I solved my issue by changing MongoDB table name. The problem was in the name of the collection of mongoDB. Your table names should be always in lower-case and plural (this was most critical thing in my case). Maybe you can try this.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search