Вопрос насчёт MySQL для Node.JS

91
04 мая 2021, 09:50

Я создаю ботов для Discord при помощи модуля discord.js для Node.js. Использую базу MySQL для хранения пользователей. Так вот, в моём боте есть команда которая вносит информацию о пользователе в базу. Но возникла проблема что бот отправляет два сообщения, и в базу вносит 2 строки с одним и тем же пользователем. Как это исправить? Вот код:

    const Discord = require('discord.js') //Это модуль для создания Дискорд ботов(это не важно)
const db = require('quick.db')
const mysql = require('mysql') 
exports.run = (client, message, args) => {
    const con = mysql.createConnection({ //Авторизация
        host: "Тут сайт.",
        user: "Юзер",
        password: "Пароль",
        database: "База"
    });
    var prefix = db.fetch(`guild_${message.guild.id}.prefix`) //Префикс сервера(тоже не важно)
    var info = args.join(' ') //Информация пользователя которую он указал(тоже не особо важно.)
    con.query(`SELECT * FROM Info WHERE ID = ${message.author.id}`, function (err, result) { //Обращаюсь к столбцу с таким ID
        if(result.length) return //Если юзер уже есть в таблице он должен остановить работу по идеи.
        if (err) return console.log(err); //Если ошибка остановит работу и выведет к консоль.
            con.query("INSERT INTO Info (User, ID, Info) VALUES  (?,?,?)", [message.author.username, message.author.id, info], function (err, result) { 
                if(result.length) return
                if (err) return console.log(err);
                message.channel.send('Вы успешно внесли о себе информацию!')
                return
    })
        con.query(`UPDATE Info SET Info = "${info}" WHERE ID = ${message.author.id}`, function (err) { //Если юзер есть в таблице он изменяет его.
            if (err) return console.log(err);
            message.channel.send('Вы успешно внесли о себе информацию!')
        })
        })
}
module.exports.help = {
    name: 'personal'
};

Прошу помогите, я уже 4 день не могу понять что я делаю не так!

Answer 1

Я решил проблему! Вот каким образом:

    con.query(`SELECT * FROM Info WHERE ID = ${message.author.id}`, function (err, result) {
        if (result.length) {
            con.query(`UPDATE Info SET Info = "${info}" WHERE ID = ${message.author.id}`, function (err) {
                if (err) return console.log(err);
                message.channel.send('Вы успешно внесли о себе информацию!')
            })
            return
        }
        if (err) return console.log(err);
        con.query("INSERT INTO Info (User, ID, Info) VALUES  (?,?,?)", [message.author.username, message.author.id, info], function (err, result) {
            if (result.length) {
                con.query(`UPDATE Info SET Info = "${info}" WHERE ID = ${message.author.id}`, function (err) {
                    if (err) return console.log(err);
                    message.channel.send('Вы успешно внесли о себе информацию!')
                })
                return
            }
            if (err) return console.log(err);
            message.channel.send('Вы успешно внесли о себе информацию!')
            return
        })
READ ALSO
PHP, отсортировать массив с timestamp

PHP, отсортировать массив с timestamp

Имеется массив с timestamp-ми примерно с прошлого года (когда добавлялись пользователи)Надумала сделать статистику, но не пойму как можно день...

120
Почему удаление в fieldset'ах с конца?

Почему удаление в fieldset'ах с конца?

Есть база данных где есть 5 строк, каждая запись из бд идет на сайт в каждый фиелдсет, но когда нажимаю

110
Change Permalink

Change Permalink

проблема такова есть сайт , в нем категории , ссылка выглядит таким siteru/category-/category-b/category-c/postname, нужно чтобы она была вида site

89
Путь в функции move_uploaded_file

Путь в функции move_uploaded_file

Почему этот код работает $dest_url = get_home_path()"imagebase/1/"

80