按钮应该删除服务器端的特定项目
button should delete specific item on server side
我正在开发一个应用程序,使用 javascript、nodejs、express 和模板引擎 handelbars 来跟踪我的开支。
所以我有一个 div "list" 包含所有费用。 (我在 div 列表旁边有一个添加按钮,在图片上看不到)
每次我添加费用时,我都会添加 div "obj" 和一个删除按钮,一个 "B" 按钮和一些关于费用的信息。
这是我的 html:
中的代码
<div class="list">
{{#each expArr}}
<div id="obj" class="obj">
<form action="/removetodo" method="POST" >
<button class="btn2">X</button>
</form>
<button onclick="openNav()" class="btn">B</button>
<a>{{date}}</a> <n>{{name}}</n> <a>{{value}} </a>
{{description}}
</div>
{{/each}}
现在,我的后端正在使用 express 在 NodeJS 服务器上运行。
这是我的 index.js 文件:
var express = require('express');
var router = express.Router();
var expArr = [];
router.get('/', function(req, res, next) {
res.render('index' , {expArr: expArr} );
});
router.post('/addtodo', function (req, res, next) {
var exp = new Object();
exp.name = req.body.name;
exp.value = req.body.val;
exp.date = req.body.date;
exp.description = req.body.descr;
expArr.push(exp);
res.redirect('/');
});
router.post('/removetodo', function (req, res, next) {
expArr.pop();
res.redirect("/");
});
module.exports = router;
在 addtodo 中,我只是将所有信息添加到服务器上的一个数组中(稍后我将添加一个数据库)。
现在我的问题是:
每个费用上的删除按钮应该删除正确的费用。
换句话说,我希望通过单击删除按钮,删除服务器上数组中的正确条目。
我该怎么做?
谢谢!
您将所有内容都存储在内存中,认为这是理所当然的,您可以开始使用普通对象而不是数组来存储数据
expArr = {}
然后为每个实例添加一个唯一标识符,例如哈希值或以毫秒为单位的日期
var exp = new Object();
exp.id = new Date().getUTCMilliseconds();
exp.name = req.body.name;
exp.value = req.body.val;
exp.date = req.body.date;
exp.description = req.body.descr;
expArr[exp.id] = exp;
现在,当您要删除费用时,请务必从客户端传递正确的 ID
router.post('/removetodo', function (req, res, next) {
if(expArr[req.body.id]) {
delete expArr[req.body.id];
}
res.redirect("/");
});
我正在开发一个应用程序,使用 javascript、nodejs、express 和模板引擎 handelbars 来跟踪我的开支。
所以我有一个 div "list" 包含所有费用。 (我在 div 列表旁边有一个添加按钮,在图片上看不到)
每次我添加费用时,我都会添加 div "obj" 和一个删除按钮,一个 "B" 按钮和一些关于费用的信息。
这是我的 html:
中的代码<div class="list">
{{#each expArr}}
<div id="obj" class="obj">
<form action="/removetodo" method="POST" >
<button class="btn2">X</button>
</form>
<button onclick="openNav()" class="btn">B</button>
<a>{{date}}</a> <n>{{name}}</n> <a>{{value}} </a>
{{description}}
</div>
{{/each}}
现在,我的后端正在使用 express 在 NodeJS 服务器上运行。
这是我的 index.js 文件:
var express = require('express');
var router = express.Router();
var expArr = [];
router.get('/', function(req, res, next) {
res.render('index' , {expArr: expArr} );
});
router.post('/addtodo', function (req, res, next) {
var exp = new Object();
exp.name = req.body.name;
exp.value = req.body.val;
exp.date = req.body.date;
exp.description = req.body.descr;
expArr.push(exp);
res.redirect('/');
});
router.post('/removetodo', function (req, res, next) {
expArr.pop();
res.redirect("/");
});
module.exports = router;
在 addtodo 中,我只是将所有信息添加到服务器上的一个数组中(稍后我将添加一个数据库)。
现在我的问题是:
每个费用上的删除按钮应该删除正确的费用。 换句话说,我希望通过单击删除按钮,删除服务器上数组中的正确条目。
我该怎么做?
谢谢!
您将所有内容都存储在内存中,认为这是理所当然的,您可以开始使用普通对象而不是数组来存储数据
expArr = {}
然后为每个实例添加一个唯一标识符,例如哈希值或以毫秒为单位的日期
var exp = new Object();
exp.id = new Date().getUTCMilliseconds();
exp.name = req.body.name;
exp.value = req.body.val;
exp.date = req.body.date;
exp.description = req.body.descr;
expArr[exp.id] = exp;
现在,当您要删除费用时,请务必从客户端传递正确的 ID
router.post('/removetodo', function (req, res, next) {
if(expArr[req.body.id]) {
delete expArr[req.body.id];
}
res.redirect("/");
});