mongodb 在Mongo和NodeJS中创建搜索端点

odopli94  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(127)

我一直在自学一个MERN CRUD项目,但还没有在前端做任何事情。我已经能够让API在所有基本的crud功能上正常工作。我一直在努力的事情是构造一个端点,允许人们搜索MongoDB并返回任何匹配。
我一直在尝试传递一个将成为HTTP GET请求一部分的键,并将其用于Mongoose find函数,但没有任何进展,我将展示我的工作“findById”函数的样子:

exports.findOne = (req, res) => {
  App.findById(req.params.noteId)
    .then((data) => {
      if (!data) {
        return res.status(404).send({
          note: "Note not found with id " + req.params.noteId,
        });
      }
      res.send(data);
    })
    .catch((err) => {
      if (err.kind === "ObjectId") {
        return res.status(404).send({
          note: "Note not found with id " + req.params.noteId,
        });
      }
      return res.status(500).send({
        note: "Error retrieving note with id " + req.params.noteId,
      });
    });
};

所以我试着以此为基础建立搜索函数的模型:

exports.search = async (req, res) => {
  App.find(req.params.key)
  .then((data) => {
    if (!data) {
      return res.status(404).send({
        note: "Note not found with search query: " + req.params.key,
      });
    }
    res.send(data);
  })}

我得到的错误是“参数“过滤器”查找()必须是一个对象”任何想法赞赏,非常感谢。

rhfm7lfc

rhfm7lfc1#

错误“find()的'filter'参数必须是对象”表示您向find方法传递的值无效。在这种情况下,您传递的是req.params.key作为参数,但find方法希望接收filter对象作为参数。
若要修复此错误,只需将有效的筛选对象传递给find方法。例如,如果要搜索字段“name”的值为“John”的所有文档,则代码将为:

相关问题