【问题标题】:Read and edit specific value from json file in JS从 JS 中的 json 文件读取和编辑特定值
【发布时间】:2022-01-02 09:03:56
【问题描述】:

我想尝试用 JS 和 Json 开发自己的数据库。不幸的是,我在那里遇到了问题。

如何从 Json 文件中读取特定内容 我用谷歌搜索得到了这个:

fs.readFile('./databases/' + dbName + ".json", (err, data) => {
     if (err) throw err;
     content = JSON.parse(data);
     console.log(content)
});

然后我只得到这个输出

{
  members: [
    { Username: 'User-1', Password: 'lol' },
    { Username: 'User-2', Password: 'lol' }
  ]
}

Process finished with exit code 0

而不是一个特定的,例如只是来自 json 文件的 user-1 的密码:

{
  "members": [
    {
      "Username": "User-1",
      "Password": "lol"
    },
    {
      "Username": "User-2",
      "Password": "lol"
    }
    ]
}

(我真的只想在这个项目中使用json文件)

感谢您的帮助:)

【问题讨论】:

    标签: javascript node.js json database fs


    【解决方案1】:

    您的问题没有太多信息

    
    fs.readFile("./databases/" + dbName + ".json", (err, data) => {
      if (err) throw err;
      var username = "User-1";
      var password = "lol";
    
      for (var i = 0; i < content.members.length; i++) {
        if (
          content.members[i].Username == username &&
          content.members[i].Password == password
        ) {
          console.log("Login Successful");
          return true;
        }
      }
      console.log("Login Failed");
      return false;
    });
    
    

    从用户端获取用户名和密码字段并使用 for 循环验证值是否在 json 数据库文件中

    【讨论】:

      【解决方案2】:

      至于将数据存储在类似 JSON 的对象中,已经存在提供出色存储选项的数据库,例如 MongoDBFirebase

      至于您的问题,代码运行正常,您正在寻找的是过滤器

      fs.readFile('./databases/' + dbName + ".json", (err, data) => {
          if (err) throw err;
      
          const username = username;
          const password = password;
      
          //const username = "User-2";
          //const password = "lol";
      
      
          content = JSON.parse(data);
          console.log(content.members.filter(mem => { if (mem.Username === username && mem.Password === password) return mem} ));
      });
      

      这将返回:

      [ { Username: 'User-2', Password: 'lol' } ]
      

      您将包含一种接受用户名和密码或您能想到的任何其他过滤器变量的方法。

      【讨论】:

      • 是否可以只返回密码?没有 [{}]?并且没有用户名。或只有用户名。
      • 是的,您现在必须将 console.log 中的内容设置为一个变量,然后您就可以像访问普通数组一样访问它。因此,如果您将其设置为名为 member 的 const,您可以使用 console.log(member[0].Username);或您想要的该对象的任何其他部分,请注意,如果用户名和密码匹配并且仅获取我们过滤的数组中的第一项,这将返回多个对象。
      • ok,非常感谢。但现在我还有一个问题,我想创建自己的数据库。我要求函数中的表格。 function readDB (dbName, tableName, where) 数据库中的条目称为成员,但我希望用户能够创建自己的表。所以我试过了,我用这个变量 content.tableName.filter () 替换了“members”,现在得到错误:“TypeError: Cannot read properties of undefined (reading 'filter')”
      • 没问题,很高兴能帮上忙。至于过滤器功能,我会阅读它的工作原理,因为这可能会很棘手(developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…)至于您遇到的问题,内容失败,“content.TableName”不是数组。跨度>
      • 所以我必须把json变成一个数组?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多