Postgresql Discord.JS Postgres XP系统

Postgresql Discord.JS Postgres XP系统,postgresql,discord.js,Postgresql,Discord.js,当我运行此代码时,由于某种原因,它会在创建行之前尝试更新行,并且无法读取rows.xp的值 client.on("message", (message) => { if (message.author.bot) return; const parse = require("pg-connection-string"); const { Pool } = require ('pg'); const pool = new Pool({ conne

当我运行此代码时,由于某种原因,它会在创建行之前尝试更新行,并且无法读取rows.xp的值

client.on("message", (message) => {
if (message.author.bot) return;
    const parse = require("pg-connection-string");
    const { Pool } = require ('pg');    
    const pool = new Pool({
        connectionString: process.env.DATABASE_URL.parse,
        port: 5432,
        host: process.env.dbhost,
        database: process.env.db,
        user: process.env.user,
       password: process.env.password,
        ssl: true,
    });

pool.connect(err => {
  if(err) throw err; 
  console.log('Connected to PostgresSQL');
})

pool.query(`SELECT xp, level FROM xp WHERE userid = '${message.author.id}'`, {useArray: true}, (err, rows) => {
const curlvl = Math.floor(0.1 * Math.sqrt(rows.xp + 0.1));
const xpgen = Math.floor(Math.random() * (20 - 5 + 1)) + 5;
if(err) throw err;
    let sql;
if (rows.length < 1){
    sql = `INSERT INTO xp(userid, xp, level) VALUES('${message.author.id}', 0, 0)`
} else {
    let xp = rows.xp;
    sql = `UPDATE xp SET xp = ${xp + xpgen} WHERE userid = '${message.author.id}'`
 }
 pool.query(sql, console.log);
 pool.end(err => {
  if(err) throw err; 
  console.log('Not logged to PostgresSQL');
});
});
});
client.on(“message”,(message)=>{
if(message.author.bot)返回;
const parse=require(“pg连接字符串”);
const{Pool}=require('pg');
常量池=新池({
connectionString:process.env.DATABASE_URL.parse,
港口:5432,
主机:process.env.dbhost,
数据库:process.env.db,
用户:process.env.user,
密码:process.env.password,
是的,
});
连接池(错误=>{
如果(错误)抛出错误;
log('连接到PostgresSQL');
})
pool.query(`SELECT xp,level FROM xp WHERE userid='${message.author.id}`,{useArray:true},(err,rows)=>{
const curlvl=Math.floor(0.1*Math.sqrt(rows.xp+0.1));
const xpgen=Math.floor(Math.random()*(20-5+1))+5;
如果(错误)抛出错误;
让sql;
如果(行数长度<1){
sql=`插入xp(userid,xp,level)值('${message.author.id}',0,0)`
}否则{
设xp=rows.xp;
sql=`UPDATE xp SET xp=${xp+xpgen}其中userid='${message.author.id}'`
}
查询(sql、console.log);
pool.end(err=>{
如果(错误)抛出错误;
log('未登录到PostgresSQL');
});
});
});
Heroku上的控制台只显示每次更新。。。但当我自己输入我的用户ID时,代码有时会起作用


有人能帮我解决这个问题吗?

问题已经解决,显然postgresql从0开始计数

pool.query(`SELECT * FROM xp WHERE userid = '${message.author.id}'`,(err, result) => {
if (!result.rows[0]){{