Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js discord.js sqlite绑定或列索引超出范围_Node.js_Sqlite_Discord - Fatal编程技术网

Node.js discord.js sqlite绑定或列索引超出范围

Node.js discord.js sqlite绑定或列索引超出范围,node.js,sqlite,discord,Node.js,Sqlite,Discord,因此,我正在为discord创建一个bot。这段代码将向加入服务器的人发送一个PM: client.on("guildMemberAdd", member => { let guild = member.guild; console.log(`${member.user.username} has joined your server`); member.user.send('Welcome to my server!'); }); 我正在尝试使用sqli

因此,我正在为discord创建一个bot。这段代码将向加入服务器的人发送一个PM:

client.on("guildMemberAdd", member => {
    let guild = member.guild;
    console.log(`${member.user.username} has joined your server`);
        member.user.send('Welcome to my server!');
});
我正在尝试使用sqlite创建一个数据库,以记录加入userID和username的人员,我有:

  client.on("guildMemberAdd", member => {
    let guild = member.guild;
    console.log(`${member.user.username} has joined your server`);
    sql.run(`UPDATE users SET userId = ${member.id} WHERE userId = ${member.id}`);
        member.user.send('Welcome to my server!');

    sql.get(`SELECT * FROM users WHERE userId = '${member.id}'`).then(row => {
            if (!row) {
            sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1, 0]);
        } else {
            sql.run(`UPDATE users SET username = ${member.user.username} WHERE userId = ${member.id}`);
        }

    }).catch(() => {
        console.error;
        sql.run('CREATE TABLE IF NOT EXISTS users (userId TEXT, username TEXT)').then(() => {
            sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1, 0]);
        });

    });
});
我得到:

未处理的PromisejectionWarning:未处理的承诺拒绝(拒绝id:2):错误:SQLITE\u范围:绑定或列索引超出范围,代码有什么问题?有人能修好吗

sql.run('INSERT-INTO-users(userId,username)值(?,),[member.id,1,0])您给出了3个值(member.id、1和0),其中只有2个值(userId和username)。另外,
sql.get()
不会返回承诺,因此不能使用
.then()
。第二个参数是回调函数,它接受两个参数,可能的错误和行,因此您的代码应该如下所示

sql.get('SELECT * FROM users WHERE userId = ?',[member.id] , (err,row) => {
        if (!row) {
        sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1]);
    } else {
        sql.run('UPDATE users SET username = ? WHERE userId = ?', [member.user.username, member.id]);
    }
})