簡體   English   中英

在 node.js 中的文件中保存和刪除行

[英]Saving and deleting lines to & from file in node.js

我為聊天室編寫了代碼,我正在嘗試實現一個按用戶名禁止的禁止列表。 在文件中,我希望它看起來像這樣(彼此之間沒有空行)。

UserToBan1 Banned-By Reason-For-Ban

UserToBan2 Banned-By Reason-For-Ban

UserToBan3 Banned-By Reason-For-Ban

我希望能夠檢查該人是否按用戶名列在該文件中。 希望能夠從列表中刪除該行(取消禁止)並能夠將某人添加到文件中。 我是 node.js 和 javascript 的新手,但我不知道什么是最好的方法。 我創建了一個 banlist.json 文件,我知道如何打開和關閉該文件,但添加、刪除行並檢查第一個變量是我卡住的地方。

編輯:這是我現在正在使用的代碼,但是當我使用 console.log(data) 或 console.log(content) 時,它似乎產生了一個空值。

s.on('connection', function(ws) {
    ws.on('message', function(message){
        // START only on connection
        message = JSON.parse(message);
        if(message.type == "name"){

        // start check for double login
        var ConnectingUser = message.data;
        var found = 0;
        s.clients.forEach(function e(client) {
            var ConnectedUser = client.personName;

            if(ConnectedUser == ConnectingUser) {
                client.send(JSON.stringify(
                    {
                        name: "Server",
                        data: "***We do not allow double logins!"
                    }
                ));
                client.send(JSON.stringify(
                    {
                        name: "Server",
                        data: "🔴 Disconnected..."
                    }
                ));
                client.close();
            }
        });         
        // end check for double login
        
        console.log("Client <"+message.data+"> Connected");
        memberJoinedChatMsg(ws, message);
        ws.personName = message.data;
        return;
    }
    
// -- test stuff start ------------------------------------------------------------
var file = './banlist/banned.json';
fs = require('fs');
fs.readFile(file, function(content) {
    var data = JSON.parse(content);
    console.log(Object.keys(data));
    // Delete line 
    delete data["UserToBan1"]
    console.log(Object.keys(data));
    // Convert JSON object to string
    var transformed_content = JSON.dumps(data);
    // write file here     
    fs.writeFile(file, transformed_content, function(err) {
        if (err) {
            console.log("Error writing file: " + (err.stack || err))
        } else {
           console.log("Saved file")
        }
    })   
});
// -- test stuff end ------------------------------------------------------------

如果您知道如何讀/寫文件,則可以直接使用將數據作為 JSON 存儲在該文件中,例如:

{
      "UserToBan1": {
          "bannedby": "user who banned UserToBan1",
          "reason": "reason for the ban"
      },
      "UserToBan2": {
          "bannedby": "user who banned UserToBan2",
          "reason": "reason for the ban"
      },
      "UserToBan3": {
          "bannedby": "user who banned UserToBan3",
          "reason": "reason for the ban"
      }
}

讀取文件時,將文件內容解析為JSON:

fs = require('fs');
var file = "/path/to/json/file";
fs.readFile(file, function(err, content) {
    if (err) {
        console.log("Error reading file: " + (err.stack || err))
    } else {
        var data = JSON.parse(content);
        console.log(Object.keys(data));
        // Delete line (see: https://stackoverflow.com/questions/3455405/how-do-i-remove-a-key-from-a-javascript-object/28797751)
        // example to delete user from list
        delete data["UserToBan1"]
        // example to add user to list
        data["UserToBan4"] = {
            "bannedby": "user who banned UserToBan4",
            "reason": "reason for banning UserToBan4"
        }
        console.log(Object.keys(data));
        // Convert JSON object to string
        var transformed_content = JSON.stringify(data, null, 4);
        // write file here     
        fs.writeFile(file, transformed_content, function(err) {
            if (err) {
                console.log("Error writing file: " + (err.stack || err))
            } else {
                console.log("Saved file")
            }
        })
    }   
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM