我正在制作Discord Bot在新用户加入时添加数据库条目。为了避免重复的条目,我正在检查数据库行ID是否已经包含成员ID。我的问题是,如果该成员不在数据库中,它将以未定义的形式返回。
var userID = member.id.toString();
var UserName = member.user.username.toString();
// var NickName = member.nickname.toString();
var DateJoined = new Date();
con.query("SELECT ID FROM listAllUsers", function (err, selectResult, fields) {
var filter = selectResult.filter(m => m.ID === userID);
console.log(filter[0].ID)
if(filter[0].ID == userID) {
console.log(`That user all ready exists in the database.`)
} else {
var sql = `INSERT INTO listAllUsers (ID, UserName, NickName, DateJoined) VALUES ('${ID}', '${UserName}', 'none', '${DateJoined}')`;
con.query(sql, function (err, result) {
if (err) throw err;
console.log(`User: ${UserName} -- ${ID} has joined the server. Added to the Database`);
});
}
});
var filter = selectResult.filter(m => m.ID === userID);
这将检查ID是否等于数据库中的任何ID。但这也是我的问题。因为如果这回来是空的,它将使这个:
console.log(filter[0].ID)
未定义。实际上.ID位未定义。
答案 0 :(得分:0)
如果您有一个条目,那么您已经知道该ID存在....
if (filter.length > 0) {
// you have a user with the id
}
但是,仅仅查询用户ID而不是返回所有人会更有意义吗? SELECT ID FROM listAllUsers WHERE ID=userID