SELECT返回与我的数据库中显示的内容不同的ID

时间:2017-03-31 10:55:03

标签: javascript node.js sqlite

我正在尝试创建一个表并在其中插入一些数据。首先,我知道.run是异步的,所以我猜没有问题,因为我将它们放在.get内,否则我知道会得到第一部分表不存在的错误的代码。

那我的问题在哪里;我在表格中插入了一些数据,当我在PC上使用数据库浏览器查看时,一切看起来都很好!但是,当我运行代码时,带有SELECT返回的row.uid不是数组中的那个。

我不知道它是否重要但是我想要插入的uid是一个长整数,例如:212545136172336003但是我回来212545136172336000,注意3现在是怎样的最后0。我正在使用sqlite3模块。

var my_array = [uid1,uid2...];

db.serialize(function() {
    db.run(`CREATE TABLE IF NOT EXISTS users (uid LONG PRIMARY KEY, value1 INTEGER, value2 INTEGER, value3 INTEGER)`);
    my_array.forEach(id => {
        db.get(`SELECT * FROM users WHERE uid='${id}'; `, (err, row) => {
            if(row == undefined) db.run(`INSERT INTO users (uid, value1, value2, value3) VALUES ('${id}',0,0,0)`);
            if(err) return;
        });
    });
});

//...

function my_f(uid, callback)
{
    db.get(`SELECT * FROM users WHERE uid='${uid}';`, function(error, row) {
        console.log(row.uid) // <----
        if(row == undefined){ 
            db.run(`INSERT INTO users (uid, value1, value2, value3) VALUES ('${uid}',0,0,0)`);
            return callback([uid,0,0,0]);
        }
        if(error) return;
        return callback([row.uid, row.value1, row.value2, row.value3]);
    });
}

0 个答案:

没有答案