записать в папку JSON из следующего элемента - PullRequest
0 голосов
/ 09 мая 2020

Я хочу знать, как читать / записывать из / в json файлы.

const Discord = require ('discord.js');
const client = new Discord.Client();
const {prefix, token,} = require('./config.json');
const fs = require ('fs');

    client.login(token)

        client.on('message', message => {
        if(message.content.startsWith(prefix + "TC")) { //TC = team create

                var args = message.content.split(' ').join(' ').slice(4);
                if(!args) return message.channel.send("No")

                var TeamCreate = `{"NameTeam": "${args}", "ManagerTeam": ${message.author.id}}`

            fs.writeFile("./team.json", TeamCreate, (x) => {
                if (x) console.error(x)
              })}});

В файле json будет отображаться: {"NameTeam": "teste","ManagerTeam": 481117441955463169}

И я хотел бы что каждый раз, когда мы размещаем заказ, он добавляется в файл json.

Пример:

1 first order = {"NameTeam": "teste","ManagerTeam": 481117441955463169}
2 second order = {"NameTeam": "teste","ManagerTeam": 481117441955463169}, {"NameTeam": "teste2","ManagerTeam": 1234567890}

1 Ответ

0 голосов
/ 09 мая 2020

Насколько я понимаю, вы хотите создать файл json, содержащий список команд.

Простой способ сделать это - прочитать и проанализировать json, внести в него изменения , а затем преобразовать json в строку и обновить файл. Кроме того, создание json со строками действительно беспорядочно и может привести к синтаксическим ошибкам, тогда как в javascript превращение js объектов в json так же просто, как JSON.stringify(javascriptObject)

Попробуйте что-то вроде этого :

const Discord = require('discord.js');
const client = new Discord.Client();
const { prefix, token, } = require('./config.json');
const fs = require('fs');

client.login(token)

client.on('message', message => {
    if (message.content.startsWith(prefix + "TC")) { //TC = team create

        var args = message.content.split(' ').join(' ').slice(4);
        if (!args) return message.channel.send("No")

        var team = {
            NameTeam: args,
            ManagerTeam: message.author.id
        }

        fs.readFile("./team.json", (err, data) => {
            if (!err && data) {
                var parsedJson;
                try {
                    parsedJson = JSON.parse(data);
                    //Make sure the parsedJson is an array
                    if (!(parsedJson instanceof Array)) {
                        parsedJson = [];
                    }
                }
                catch (e) {
                    console.log("Couldn't parse json.");
                    parsedJson = [];
                }
                finally {
                    //Add the newly created team to parsedJson
                    parsedJson.push(team);

                    //Write file, stringifying the json.
                    fs.writeFile("./team.json", JSON.stringify(parsedJson), (err) => {
                        if (!err) {
                            console.log("Successfully created team.");
                        }
                        else {
                            console.log("Error writing to file.")
                        }
                    });
                }
            }
            else {
                console.log("Error reading json");
            }
        });
    }
});

Надеюсь, это поможет и удачи.

...