我试图在从 Electron.js 应用程序将数据插入 SQLite 表后返回 lastID。虽然数据插入到表中,但 LastID 没有返回
这是 electronics main.js 中的代码
ipcMain.on('categories:add',(e,category)=>{
try {
Category.insert(
category.name,
category.description
);
} catch (error) {
console.log(error)
}
})
这是来自category.js的代码 从 './db_connection' 导入 {db}
class Category{
constructor(name,description){
this.name = name,
this.description = description
}
static createTable(){
let sql = `CREATE TABLE IF NOT EXISTS categories(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
description TEXT
)`
return db.run(sql)
}
static insert(name,description){
db.run(` INSERT INTO categories VALUES(?,?,?) `,
[this.lastID,name,description],(err)=>{
if(err){
return console.log(err.message)
}
return console.log(this.lastID)
})
}
}
插入后如何获取lastID 作为响应
看起来像是使用箭头函数作为回调的范围问题。使用经典函数为我解决了这个问题,例如:
db.run(`INSERT INTO categories VALUES(?,?,?) `,
[this.lastID, name, description], function(err) {
if (err) {
return console.log(err.message)
}
return console.log(this.lastID)
})
}
我也不确定
static
在这里的用法,也可能会干扰 this
。