【问题标题】:Is there a way to read & write a 2d array to a .db or .txt file in node.js有没有办法在 node.js 中读取和写入二维数组到 .db 或 .txt 文件
【发布时间】:2021-11-11 13:46:57
【问题描述】:

我对这个领域真的很陌生,刚开始我的第一个项目,我不想使用复杂的数据库,我只想将一个简单的二维数组(表)存储到文件中,以便我以后可以检索它,我确实看过 fs.writeFile 但它似乎不接受这种格式的数组...

我对这个领域真的很陌生,所以如果有任何其他存储数据的方式,或者如果这是一种非常糟糕的存储数据方式,那么请建议我该怎么做

var myArray = [
["bob","john","jack"],
[62,31,11],
["employed","unemployed","uneligible"],
["engineer","doctor","student"],
["21/09/2021","28/11/2021","16/12/2021"]]

如何将其保存到文件(任何文件)以供以后使用

// something like this 

writeToFile( "./info.db" , myArray )

// inside the file info.db
[["bob","john","jack"],[62,31,11],["employed","unemployed","uneligible"],["engineer","doctor","student"],["21/09/2021","28/11/2021","16/12/2021"]]

并且为了将该数组作为数组返回,我确实尝试使用带有 utf8 编码的 readFileSync,但是当我尝试读取数据时,我将数据作为缓冲区返回[0],我得到了第一个字符字符串“[”

【问题讨论】:

    标签: javascript node.js database store fs


    【解决方案1】:

    这是因为fs.writeFile 接受一个字符串 作为第二个参数。所以我们可以改为JSON.stringify 数据而不是写原始的JS object

    const { writeFileSync } = require('fs');
    
    var myArray = [
        ["bob","john","jack"],
        [62,31,11],
        ["employed","unemployed","uneligible"],
        ["engineer","doctor","student"],
        ["21/09/2021","28/11/2021","16/12/2021"]
    ];
    
    writeFileSync('./info.db', JSON.stringify(myArray));
    

    一般来说,使用 JSON 作为大型数据库并不是一个好习惯,因为

    • 首先,它不是关系
    • 它不是 DBMS,它是一种数据格式。

    【讨论】:

    • 所以我应该看一下 sqlite3,因为我使用的是电子,我必须将数据库嵌入到应用程序中,我刚开始这样做,并且了解 dbms 和 SQL 语言似乎真的很难,任何关于如何开始的建议
    • 以及如何再次读取这些数据,当我将 readFilesync 与 utf8 一起使用时,我将数据作为单个字符串而不是数组返回
    • 这是因为它以字符串结尾。例如你有const data = readFileSync('./info.db'),你必须JSON.parse(data)
    • 使用 sqlite3 是一个不错的选择,至少对于桌面应用程序来说是这样。 SQL 并不难。语法非常易读。好吧,尝试开始使用 sqlite3,无论何时需要帮助,StackOverflow 都在那里 :)
    • 如果对您有帮助,请考虑接受答案。
    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多