Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JSON文件创建一个数组作为数据库,并使用Javascript更新/保存它_Javascript_Arrays_Node.js_Json - Fatal编程技术网

如何使用JSON文件创建一个数组作为数据库,并使用Javascript更新/保存它

如何使用JSON文件创建一个数组作为数据库,并使用Javascript更新/保存它,javascript,arrays,node.js,json,Javascript,Arrays,Node.js,Json,我在Node.js中制作了一个discord bot,主要是为了好玩,以便更好地编码,我希望bot将字符串推入数组并永久更新数组文件 我一直在为我的数组使用单独的.js文件,比如: module.exports = [ "Map: Battlefield", "Map: Final Destination", "Map: Pokemon Stadium II", ]; 然后在我的主文件中调用它们。现在我尝试使用.push(),它将添加所需的字符串,但只添加了一次 使用我可以更新和保

我在Node.js中制作了一个discord bot,主要是为了好玩,以便更好地编码,我希望bot将字符串推入数组并永久更新数组文件

我一直在为我的数组使用单独的.js文件,比如:

module.exports = [
  "Map: Battlefield",
  "Map: Final Destination",
  "Map: Pokemon Stadium II",
];
然后在我的主文件中调用它们。现在我尝试使用.push(),它将添加所需的字符串,但只添加了一次

使用我可以更新和保存输入的阵列的最佳解决方案是什么?显然,JSON文件很适合这样做


谢谢Carl,恭喜你想到了写一个机器人来练习编码。我打赌你会成功的

我建议你试着把你的问题分成小块,这样就更容易推理了

步骤1-储存 我同意您使用JSON文件作为数据存储。对于一个打算成为“训练馆”的应用程序来说,这已经足够了,你以后有足够的时间开始查看Postgres、MySQL或Mongo等数据库

存储值列表的JSON文件可能如下所示:

{
“价值观”:[
“地图:战场”,
“地图:最终目的地”,
“地图:口袋妖怪体育场II”
]
}
当您将这段代码保存到
list1.json
中时,您就有了第一个数据文件

第二步-阅读 在NodeJS中读取JSON文件很容易:

const list1=require('./path to/list1.json');
console.log(list.values);
这将在应用程序启动时将文件的全部内容加载到内存中。您还可以研究使用更复杂的方法来读取文件

第三步-写作 看起来您知道如何使用API(如
push()
splice()
)进行内存阵列修改

一旦修复了内存表示,就需要将更改持久化到文件中。基本上你必须用JSON格式写下来

选项n.1:您可以使用节点的文件系统API:

//https://stackoverflow.com/questions/2496710/writing-files-in-node-js
常数fs=要求('fs');
const filePath='./指向/list1.json'的路径;
const fileContent=JSON.stringify(list1);
fs.writeFile(文件路径、文件内容、函数(err){
如果(错误){
返回console.log(err);
}
log(“文件已保存!”);
}); 
选项n.2:您可以使用它,它是对基本API的扩展:

const fs=require('fs-extra');
const filePath='./指向/list1.json'的路径;
fs.writeJson(文件路径,列表1,函数(err){
如果(错误){
返回console.log(err);
}
log(“文件已保存!”);
});
在这两种情况下,
list1
都来自前面的步骤,这是您在内存中修改数组的地方

注意异步代码: 两个写作示例都使用了-链接指向一篇像样的文章

为了简单起见,您可以首先使用同步API,它基本上是:

fs.writeFileSync
fs.writeJsonSync
您可以在上面的链接中找到所有详细信息


享受机器人编程的乐趣

您可以使用允许您使用JSON文件作为“数据库”&公开诸如“推送”之类的方法非常感谢您,这非常详细,正是我需要帮助的!我今天要用这个,看看我的表现如何,我感谢你花时间回答我的问题!非常欢迎你,只要记住把你的经验传下去,并且总是花一些时间帮助其他人:-)嗨,又是我了!我使用了示例代码并设法更新了JSON文件中的数组。然而,目前我只能让它覆盖JSON文件,而不能附加到数组的末尾。我不知道从这里到哪里去。。如有任何见解,将不胜感激!我不确定是否需要使用for(“我的数组”中的var I)。上面的代码示例非常简单,是的,如果您遵循这一点,您的应用程序将最终覆盖该文件。在基本应用程序或开发练习中,这通常是可以接受的行为。如果您想继续前进,一个简单而有价值的经验就是查看数据库。我可以推荐博士后吗?