javascript - Express - 根据发布请求推送到测试阵列
问题描述
我在 Express 中创建 CRUD 操作,我想在同一个文件中的简单数组上测试它。我的问题是一切正常,但删除或发布请求不会更新该数组的项目。我究竟做错了什么 ??
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
app.use(cors());
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
let cats = [
{
id: 1,
title: "Filemon",
color: "black"
},
{
id: 2,
title: "Burys",
color: "fire"
},
{
id: 3,
title: "Mysia",
color: "Grey"
},
{
id: 4,
title: "Niunia",
color: "Black - grey"
}
];
app.get("/api/cats", (req, res) => {
res.send(cats);
});
app.get("/api/cats/:id", (req, res) => {
res.send(cats.find(t => t.id === parseInt(req.params.id)));
});
app.post("/api/cats", (req, res) => {
let cat = {
id: cats[cats.length - 1].id + 1,
title: req.body.title
};
cats.push(req.body);
res.send(cat);
});
我想根据最后一只猫的 ID 添加具有动态 ID 的猫。当我添加一只猫时,他的 id 是5,但是当我添加下一个时,他的 id 是未定义的,因为我的数组没有更新。如何解决这个问题?
解决方案
app.post("/api/cats", (req, res) => {
let cat = {
id: cats[cats.length - 1].id + 1,
title: req.body.title
};
cats.push(req.body);
res.send(cat);
});
cats.push(req.body);
应该读到cats.push(cat);
您需要将新对象推送到您的猫数组中。然而,这不是永久性的,任何时候你重新启动服务器,数据都会恢复到初始猫声明中的状态。对于永久数据,您需要将此信息存储在数据库中。
推荐阅读
- java - 如何解决此警告 将此 lambda 替换为 forEach 中的方法引用
- php - Laravel apache公共索引未显示页面
- triggers - GTM Click ID 触发整个对象
- mendix - 如何在 Mendix 中配置 Google OCR?
- css - 如何更正 CSS 文件中的 $ 标记?
- javascript - 如何将内联事件处理程序替换为幻灯片中的事件侦听器
- sql-server - 如何在 Visual Studio 中从 SQL 查询(.sql 文件)创建仪表板
- google-sheets - 如何在我的网站上使用 Google 表格查看下拉菜单(数据验证)
- r - 仅在 tidymodels 的配方中选择有序因子
- svelte - 如何读取苗条组件的属性值