没有框架的 NodeJS:findById

NodeJS without frameworks: findById

我是初学者,正在尝试使用 NodeJS 和 JSON 文件创建函数 findByID 作为没有框架的数据库,代码:

const http = require("http");
const url = require("url");
const fs = require("fs");
const querystring = require("querystring");

const data = fs.readFileSync("./data/data.json");
let todos = JSON.parse(data);
    const server = http.createServer((req, res) => {
        const urlparse = url.parse(req.url, true);
      if (urlparse.pathname == "/todos" && req.method == "GET") {
          const search = urlparse.search;
          if (search) { 
            const [, query] = urlparse.search.split("?");
            const data = querystring.parse(query);
            todos = todos.filter((todo) =>  todo.id === data.id);
            res.end(JSON.stringify(todos, null, 2));
          }
        }})

当我第一次与邮递员联系时,一切都很好。 1st request

当我第二次检查响应时 window 有一个空数组。2nd request

每个请求使用不同的 ID。

我没有看到 todos 被定义,所以我假设它是全局的,然后这一行在每个请求中改变它:

todos = todos.filter((todo) =>  todo.id === data.id);

另一件事是,如果 id 是唯一的,您可以使用 todos.find 来获得第一个匹配项。

所以改用新变量并找到:

const todoMatch = todos.find((todo) =>  todo.id === data.id);