electron SQLite 3在插入后返回未定义的值

dm7nw8vv  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(152)

我正在用sqlite 3数据库开发电子应用程序。我想在数据库中保存数据后获得最后插入的ID。
我已经运行了下面的查询,但调用结果总是显示未定义。有人能帮助我解决这个问题吗?

db.run(`INSERT INTO  myTable (data1, data2) VALUES (aa, bb)`, (err) => {
            console.log(this.lastID)
            if (err) {
                console.log(err)
            } else {

                console.log( this.lastID)
            }

已成功插入数据库,但结果this.lastID结果未定义。

gab6jxml

gab6jxml1#

这是因为您使用了箭头语法。箭头语法将this上下文设置为父级。您应该执行以下操作:

db.run(`INSERT INTO  myTable (data1, data2) VALUES (aa, bb)`, function (err)  {  
            console.log(this.lastID)
            if (err) {
                console.log(err)
            } else {

                console.log( this.lastID)
            })

call、apply和bind方法不适合Arrow函数--因为它们被设计为允许方法在不同的作用域中执行--因为Arrow函数基于Arrow函数所定义的作用域来建立“this”。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

相关问题