javascript - 访问和修改服务器端高分文件的正确方法是什么?
问题描述
我正在为我的 Raspberry PI Web 服务器制作一个 JavaScript 游戏作为学校项目。我将高分图表作为 JSON 文件。我正在使用 getJSON 调用将其更新到客户端,该调用有效。当达到新的高分时,我应该如何做写作部分?我正在学习 nodejs、ajax 和 websockets,但在查找信息时遇到了问题。
我想学习如何安全地做这种事情,而无需在 PI 中打开太多权限。
解决方案
您可以将当前分数保存在对象服务器端。
每次您的客户端将更新的分数发送回服务器时,您都可以更新此内存中的分数对象,然后将其写入文件以将其保存。
这是一个将当前分数保存到文件然后重新加载该文件的示例:
var fs = require('fs');
var currentScores = [
{initials: 'JDH', score: 10000},
{initials: 'HMH', score: 9000},
{initials: 'DDE', score: 7000}
];
const ScoresFile = './scores.json';
function SaveScores(scores) {
var jsonData = JSON.stringify(scores);
fs.writeFileSync(ScoresFile, jsonData);
}
function LoadScores() {
var jsonData = fs.readFileSync(ScoresFile);
var loadedScores = JSON.parse(jsonData);
return loadedScores;
}
SaveScores(currentScores);
var a = LoadScores();
console.log(a);
推荐阅读
- scala - 如何在 chisel3 中使用 peekpoketester 进行并行测试?
- javascript - 使网络爬虫具有循环
- python - 如何在 Django 中正确使用 UUID id 作为 url 参数?
- react-native - error Failed to fetch diff for react-native@xxx 也许它还没有发布?将 react-native 从 0.59.4 升级到 0.60.6
- django - django.core.exceptions.ImproperlyConfigured 错误:在 Django 2.2.5 上
- mysql - 选择转换功能不起作用!返回语法错误?
- database - Solr,响应中不存在空值
- ios - 为什么不能在iOS13中将超过6个按钮作为UIBarButton项目(不是UIButton而是UIBarButton项目)添加到导航栏,swift
- flutter - 如何在 chrome 平台上运行颤振测试?尝试启动项目时“未运行测试”
- ios - 在没有委托方法的情况下显示嵌入式控制器时,是否可以让导航控制器处理手势?