我想为我的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)
});
}
});
}
我用谷歌翻译了这篇文章,所以如果我在翻译中有任何错误,我很抱歉
2条答案
按热度按时间xv8emn3q1#
正如@raymondzhang在他的回答中指出的,你的错误就发生在这一行:
在你对这个答案的评论中,你说
result2[0].xp
不是未定义的,也就是已定义的,这让我思考result2
是一个如下所示的数组:如果这是真的,你可能正在寻找一个
map
功能如下:您可以将其简化为:
将其放回代码中,您的原始代码如下所示:
uttx8gqw2#
您收到的错误消息
“无法读取未定义的属性'map'”
意思是在这个函数中
var sla = result2.xp.map(function(a){})
result2.xp
未定义。这通常意味着它不存在,mysql找不到它,但是根据你的代码,也许你没有
insert
或者create
这个table
正确地?好像少了一个result2.xp
价值,这是导致问题的原因。您应该检查您的数据库及其将出现错误的值。编辑:基于
result2
是一个数组。您应该循环遍历数组,获取xp值并将它们存储在另一个数组中,然后对其进行排序。