javascript - 没有框架的 NodeJS: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));
}
}})
当我第一次与邮递员核对时,一切都很好。 第一个请求
当我第二次在响应窗口中检查时,有一个空数组。第二次请求
每个请求使用不同的 id。
解决方案
我没有看到 todos 定义,所以我假设它是全局的,然后这条线在每个请求中都会改变它:
todos = todos.filter((todo) => todo.id === data.id);
另一件事是,如果 id 是唯一的,您可以使用它todos.find
来获取第一个匹配项。
所以改为使用一个新变量并找到:
const todoMatch = todos.find((todo) => todo.id === data.id);
推荐阅读
- python - 使用烧瓶在邮递员中返回的重复字段
- flutter - 使用 Google Maps Flutter Plugin 在 Android 上崩溃的 Flutter App
- max-msp-jitter - Max/MSP:如何操作 zl 列表数据以获取上四分位数
- go - 如何同时使用 LoadHTMLGlob 和 LoadHTMLFiles
- android - 通过 Android Studio 中的 ADM 下载管理器下载
- python - 将多个 XML 文件解析为 Python 中的一个字典列表
- javascript - 如何显示在新 HTML 页面中选择的文件 (jpeg/png) 的预览?
- python - 如何将此信息解析为单个项目?
- docker - hostconfig.json 在哪里(Docker 桌面 + WSL2 环境)
- go - 在使用 gopkg.in/ini.v1 进行测试和调试期间无法加载我的 iniFile