簡體   English   中英

在 Mongo 和 NodeJS 中創建搜索端點

[英]Creating a search endpoint in Mongo and NodeJS

我基本上一直在自學一個 MERN CRUD 項目,但到目前為止還沒有在前端做任何事情。 我已經能夠讓 API 在所有基本的 crud 功能上正常工作。 我一直在努力的事情是構建一個端點,允許某人搜索 MongoDB 並返回任何匹配項。

我一直在嘗試傳遞一個密鑰,該密鑰將成為 HTTP GET 請求的一部分,並將其與 Mongoose 一起使用,查找 function,但我沒有得到任何結果。 我將展示我的工作“findById”function 的樣子:

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,
      });
    });
};

所以我嘗試 model 搜索 function 基於:

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);
  })}

我得到的錯誤是“find() 的參數“過濾器”必須是一個對象”任何想法表示贊賞,非常感謝。

錯誤“find() 的‘filter’參數必須是一個對象”表示您將無效值傳遞給 find 方法。 在這種情況下,您將 req.params.key 作為參數傳遞,但 find 方法期望接收過濾器 object 作為參數。

要修復此錯誤,只需將有效過濾器 object 傳遞給查找方法即可。 例如,如果要搜索字段“name”的值為“John”的所有文檔,代碼為:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM