Я хотел сделать ранг для моего босса 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)
});
}
});
}
Как отметил @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)
});
}
});
}
Сообщение об ошибке, которое вы получаете
msgstr "невозможно прочитать свойство" map "undefined"
означает, что в этой функции здесь
var sla = result2.xp.map(function(a){})
result2.xp
не определено.
Обычно это означает, что он не существует, mysql не может его найти, но основываясь на вашем коде, возможно, вы не insert
или create
table
правильно? Кажется, что отсутствует значение result2.xp
, что приводит к этой проблеме. Вы должны проверить свою базу данных и ее значения, где будет находиться ошибка.
Изменение: на основе комментария, что result2
является массивом. Вы должны пройти через массив, получить значения xp и сохранить их в другом массиве, а затем отсортировать его.
.xp
только значения в массиве делают правильно?