Estoy desarrollando una aplicación de electrones con la base de datos sqlite 3. Me gustaría obtener la última identificación insertada después de guardar los datos en la base de datos.
He ejecutado debajo de la consulta pero el resultado de la llamada siempre se muestra indefinido. ¿alguien puede ayudarme a resolver este problema?
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) }La base de datos se insertó con éxito pero el resultado, el resultado this.lastID no está definido.
Es porque estás usando la sintaxis de flecha. Sintaxis de flecha que establece this contexto en el padre. Deberías hacer:
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) })Los métodos de llamada, aplicación y vinculación NO son adecuados para las funciones de flecha, ya que fueron diseñados para permitir que los métodos se ejecuten dentro de diferentes ámbitos, porque las funciones de flecha establecen "esto" en función del ámbito en el que se define la función de flecha.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions