Home > Back-end >  Mongoose Model.find() methods query string not working
Mongoose Model.find() methods query string not working

Time:03-13

im trying to make simple rest api. I have a collection in mongodb and i connected my db to my app with mongoose pkg. I can access all items without query strings with Operator.find() but it doesn't work with query string ex: Operator.find({name:'Kapkan'}) it returns all of them. Also Operator.findOne({name:'Azami'}) doesn't work either. The query string returns the first element of the collection no matter what.

app.get('/api/operators',async(req,res) => {
  let operators;
  try{
    if(req.query.name){
      Operator.find({name:'Kapkan'}).then((data) => {
        console.log(data);
      });
    }
    else
      operators = await Operator.find();
  
    res.send(operators)
  }catch(er){
    console.log(er);
  }
})

CodePudding user response:

You are not assigning result of query with filter to operators. Unsure if you have {} around else or not but try refactoring the code as shown below:

app.get('/api/operators',async(req,res) => {
  const filters = {};

  if (req.query.name) {
    filters.name = req.query.name; 
  }

  const data = await Operator.find(filters);

  console.log(data);

  return res.json({ data });
})

CodePudding user response:

I checked my Schema and i realize i forgotten put name field...

const OperatorSchema = new Schema({
    _id:Number,
    logo:String,
    image:String,
    unit:String,
    *name:String,
    side:String,
.
.
.
})
  • Related