首页 > 解决方案 > Mongoose find 不适用于查询对象

问题描述

我正在node.js学习mongo db。我有一个代码来获取记录并且工作正常

await studentModel.find({}, (err, data) => {
    if (err) throw err;
      students= data.map((d) => {
        return new InterviewQuestion(d['roll_no'], d['name']);
      });
    });

但是当我想过滤它们时,查询不会返回任何记录

await studentModel.find({sClass: sClass}, (err, data) => { //sClassis a field in document and also the name of variable
    if (err) throw err;
      students= data.map((d) => {
        return new InterviewQuestion(d['roll_no'], d['name']);
      });
    });

标签: node.jsmongodbmongoose

解决方案


当您使用 async/await 时,不要使用回调并在 async/await 方法中使用 try/catch,这样您就可以这样做

try {
  let data = await studentModel.find({});
  students = data.map((d) => {
    return new InterviewQuestion(d["roll_no"], d["name"]);
  });
} catch (err) {
  throw err;
}

try {
  let data = await studentModel.find({ sClass: sClass });
  students = data.map((d) => {
    return new InterviewQuestion(d["roll_no"], d["name"]);
  });
} catch (err) {
  throw err;
}

这个查询是正确的

await studentModel.find({ sClass: sClass })

你也可以试试这个:

await studentModel.find({ sClass})

你的问题来自另一件事,因为我测试了查询每件事都可以


推荐阅读