Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
lastID is undefined using sqlite3 in Node.js

Database inserted successfully but this.lastID is undefined. Can anyone help me what is the wrong with this code?

app.post('/products/create', (req,res) => {
    
    upload(req, res, (err) => {
        const name = req.body.name
        const description = req.body.description
        const Filename = req.file.filename
        const id = this.lastID
        console.log(id)
        //console.log('Selected Files: ' + req.Filename);
        db.uploadPost(name, description, Filename, function(error){
            if(error){
                console.log(err)
            }
            else{
                console.log(this.lastID)
                res.redirect('/products/'+id)
            }
        })
    })
})

and my databse

exports.uploadPost = function(name, description, Filename, callback){
        const query = "INSERT INTO products('name', 'description', 'image') VALUES (?,?,?)"
        const values =  [name, description, Filename]
        db.run(query,values, function(error){
            callback(error)
        })
    }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

In the context of upload method, the property this.lastID is not available because you execute the insertion query at a latter stage.

One solution would be the following:

exports.uploadPost = function(name, description, Filename, callback){
    const query = "INSERT INTO products('name', 'description', 'image') VALUES (?,?,?)"
    const values =  [name, description, Filename]
    db.run(query,values, function(error){
        callback(error, this.lastID) // pass the computed lastID as a parameter of the callback
    })
}

And then change:

app.post('/products/create', (req,res) => {

    upload(req, res, (err) => {
        const name = req.body.name
        const description = req.body.description
        const Filename = req.file.filename
    
        db.uploadPost(name, description, Filename, function(error, id){
            if(error){
                console.log(err)
            }
            else{
                // use the passed id here, after the insertion query has been executed successfully 
                console.log(id)
                res.redirect('/products/'+id)
            }
        })
    })
})
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda