我正在尝试创建一个表并在其中插入一些数据。首先,我知道.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]);
});
}