单击按钮后,我需要将json文件重置为原始状态。目前,我正在使用路由器建模,并且需要帮助来扩展现有代码。
这是我在server.js文件上编写的代码段,我运行“ nodemon”来启动服务器。
var messages = [{index:0, rating:0}, {index:1, rating:0}]
app.get('/votes', (req, res) =>{
res.send( messages )
})
app.post('/votes', (req, res) =>{
votes.push(votes)
res.sendStatus(200)
})
所以我对文件“票”(json格式)的初始状态是:
[{"index":0,"rating":0}, {"index":1, "rating":0}]
在执行一些用户操作之后,我将使用以下代码将一些数据添加到此json文件中:
<body>
// some logic here
<script>
$(() => {
$("#submit").click(()=>{
var message = [ { index:1, rating: $("#input").val()},
{ index:2, rating: $("#input2").val()}]
postMessage(message)
})
})
function postMessage(message) {
$.post('http://localhost:8080/votes', message)
}
</script>
</body>
然后我的json文件中包含以下内容
[{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}]
问题:如何通过单击按钮进行新交易将json文件(不是json变量)重置为初始状态? 我只是在进行原型制作,因此可以使用一种快速而肮脏的方法。
答案 0 :(得分:1)
我会建议构建或使用某种形式的用户验证,并且每个用户都有一份仅适合他的初始数据副本。请记住,这些数据永远不会被垃圾收集,因此您将必须自己管理删除。我使用了Express提供的基本IP,但这不是一个好习惯。 使用npm-memorystore可以进行一些内存管理。 如果要标识用户,可以使用express-session,express-jwt
var messages = [{
index: 0,
rating: 0
}, {
index: 1,
rating: 0
}];
var usersMessages = {};
app.get('/votes', (req, res) => {
var userIp = req.ip;
usersMessages[userIp] = [].concat(messages);
res.send(usersMessages[userIp]);
});
app.post('/votes', (req, res) => {
var userIp = req.ip;
var userVotes = usersMessages[userIp];
if (!userVotes)
usersMessages[userIp] = [].concat(messages);
usersMessages[userIp].push(req.body.votes);
res.sendStatus(200)
});
答案 1 :(得分:1)
看看这个:
$(() => {
let message = [];
$("#submit").click(() => {
//fill with values
message = [
{ index: 1, rating: $("#input").val() },
{ index: 2, rating: $("#input2").val() }
];
postMessage(message); //send post
message = []; //reset array
});
function postMessage(message) {
$.post("http://localhost:8080/votes", message);
}
});
Hope this helps. =D
答案 2 :(得分:0)
您需要做的就是从数组中删除所有对象。
您可以按照以下步骤进行操作。
var messages = [{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}];
messages.length = 1;
console.log(messages);
另一种方式。
var messages = [{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}];
messages = messages.slice(0,1);
console.log(messages);
上面的代码是做什么的,它将只是将数组设置回它的第一个值。