ранжировать discord.js используя mysql

0

Я хотел сделать ранг для моего босса discord. Я попробовал так, но дал ошибку "не могу прочитать свойство" map "неопределенного"

var dados = require("../create-table");
const mysql = require('mysql');
const sequelize = require('sequelize');
const connection = mysql.createConnection({
  host     : 'myhost',
  port     : '3306',
  user     : 'myuser
  password : 'mypassword',
  database : 'mydatabase',
  charset : 'utf8mb4'
});

exports.run = (client, message, args)  => {
    connection.query('SELECT * FROM guildn WHERE id = '${message.guild.id}'', function (err, result) {
        if (err) {
            return console.log('Error1');
        }
        if (result.length){
            connection.query('SELECT * FROM level WHERE guild = '${message.guild.id}'', function (err, result2) {
                if(err) {
                    return console.log('Error1');
                }
                var sla = result2.xp.map(function(a){

                })
                sla.sort(function(a, b) {
                    return a - b;
                });
                console.log(sla)
            });
        }
    });
}
Я использовал переводчика Google, чтобы сделать это сообщение, поэтому, если у меня есть какие-либо ошибки в переводе, я извиняюсь
Теги:
discord.js

2 ответа

0

Как отметил @RaymondZhang в своем ответе, ваша ошибка возникает из этой строки:

var sla = result2.xp.map(function(a) { ... })

В ваших комментариях к этому ответу вы сказали, что result2[0].xp не является неопределенным, иначе это определено, что заставляет меня думать, что result2 - это массив, который выглядит примерно так:

[
    { xp: <string1, object1, or function1> },
    { xp: <string2, object2, of function2> },
    ...
]

Если это правда, вы, вероятно, ищете такую функцию map как это:

var sla = result2.map(function(a) {
    return a.xp;
});

Вы можете упростить это:

var sla = result2.map(a => a.xp);

Вернув это в свой код, вот как выглядит ваш исходный код:

... initialize variables
exports.run = (client, message, args)  => {
    connection.query('SELECT * FROM guildn WHERE id = '${message.guild.id}'', function (err, result) {
        if (err) {
            return console.log('Error1');
        }
        if (result.length){
            connection.query('SELECT * FROM level WHERE guild = '${message.guild.id}'', function (err, result2) {
                if(err) {
                    return console.log('Error1');
                }
                var sla = result2.map(function(a) {
                    return a.xp;
                });
                sla.sort(function(a, b) {
                    return a - b;
                });
                console.log(sla)
            });
        }
    });
}
0

Сообщение об ошибке, которое вы получаете

msgstr "невозможно прочитать свойство" map "undefined"

означает, что в этой функции здесь

var sla = result2.xp.map(function(a){})

result2.xp не определено.

Обычно это означает, что он не существует, mysql не может его найти, но основываясь на вашем коде, возможно, вы не insert или create table правильно? Кажется, что отсутствует значение result2.xp, что приводит к этой проблеме. Вы должны проверить свою базу данных и ее значения, где будет находиться ошибка.

Изменение: на основе комментария, что result2 является массивом. Вы должны пройти через массив, получить значения xp и сохранить их в другом массиве, а затем отсортировать его.

  • 0
    если я поставлю result2 [0] .xp не будет отображаться индиффинно, но получит только 1 результат, поэтому я попытался использовать resul2.xp, чтобы получить все результаты и отсортировать
  • 0
    Но сам массив не имеет свойства .xp только значения в массиве делают правильно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню