将东西添加到json文件microDB中的现有数组中

时间:2017-09-18 15:51:45

标签: javascript json

我正在尝试查看是否可以在 MicroDB 文件中添加已创建的对象。

我尝试过使用 .push() ,但我没有运气。

该文件已经包含此对象:

{
    "home": {
        "location": "walsall",
        "time": "12:00",
        "date": "12/12/17",
        "gym": "home",
        "players": ""
    }
}

文件是 .json

当用户想要加入时,我正试图在players键中添加内容。

有任何帮助吗?另外,如何从前面提到的user name部分删除players

编辑:

我的.js文件中的一些代码

if (commandEX.toLowerCase() === "join") {
    var joinEX = message.content.split(' ')[2];
    if (joinEX === undefined) {
        return message.reply("**ERROR**: No gym entered, enter a gym to join.").then(m => m.delete(10000));
    }
    var removeTrigger = message.content.split(' ')[0];
    var findGym = message.content.slice(removeTrigger.length);
    findGym = findGym.slice(commandEX.length);
    findGym = findGym.slice(2);
    var commandFind = exRaidDB.data[findGym];
    memberEX = message.member.nickname;
    if (commandFind == undefined) {
        message.channel.send(`**ERROR**: No ex raid at that gym.`).then(m => m.delete(10000));
    } else {
        message.channel.send(`**Added ${memberEX} to the list, details below.** \n**EX Raid at** ${commandFind.gym} \n**Date**: ${commandFind.date} \n**Time**: ${commandFind.time} \n**Location**: ${commandFind.location}`);
        // this line is where the code needs to be for adding the $[message.member.nickname} into the "players" string.
    }
}

1 个答案:

答案 0 :(得分:0)

当您标记javascript时,我认为您使用的是Node.js吗?

如果是这种情况,您可以使用fs.writeFileSync(PATH_TO_JSON, JSON.stringify(newObj), 'utf8');,其中newObj是您要存储在.json文件中的新对象。

但是不是直接使用文件,而是使用如下的简单包装器:

let
    fs = require('fs'),
    PATH_TO_JSON = '';

function readJson() {
    if (!fs.existsSync(PATH_TO_JSON)) {
        writeJson();
    }
    return JSON.parse(fs.readFileSync(PATH_TO_JSON, 'utf8'));
}

function writeJson(obj = {}) {
    fs.writeFileSync(PATH_TO_JSON, JSON.stringify(obj), 'utf8');
}

function Ressource(path) {
    PATH_TO_JSON = path;
    this.data = readJson();
}

Ressource.prototype.set = function(obj) {
    this.data = obj;
};

Ressource.prototype.save = function() {
    writeJson(this.data);
};

module.exports = Ressource;