I am working with Nodejs and i am using expressjs framework,Right now i am trying to get
"last inserted id" but i am getting "undefined" in console, How can i get last inserted id ? Here is my current code
static async addServiceDetail(salonId,serviceId,genderTypeId,price,serviceName)
{
const sql = `SELECT id from hc_servicesdetail WHERE shopId='${shopId}' AND serviceId='${serviceId}' AND genderTypeId='genderTypeId'`;
const [rows, fields] = await pool.execute(sql);
if(rows<1)
{
const sql2 = `INSERT INTO hc_servicesdetail (shopId, serviceId, genderTypeId,price,serviceName) VALUES ("${shopId}", "${serviceId}", "${genderTypeId}", "${price}","${serviceName}")`;
const datass = await pool.execute(sql2);
console.log('last inserted id is ' +datass.insertId);
}
else
{
console.log('already exist');
}
}
}
module.exports = User;
>Solution :
Use the result.insertId property. This property is available in the callback function that gets executed when you perform an INSERT query.
static async addServiceDetail(shopId, serviceId, genderTypeId, price, serviceName) {
const sql = `SELECT id from hc_servicesdetail WHERE shopId='\${shopId}' AND serviceId='\${serviceId}' AND genderTypeId='\${genderTypeId}'`;
const [rows, fields] = await pool.execute(sql);
if (rows < 1) {
const sql2 = `INSERT INTO hc_servicesdetail (shopId, serviceId, genderTypeId, price, serviceName) VALUES ("\${shopId}", "\${serviceId}", "\${genderTypeId}", "\${price}","\${serviceName}")`;
const [datass, _] = await pool.execute(sql2);
console.log('last inserted id is ' + datass.insertId);
} else {
console.log('already exist');
}
}
Notice that I changed genderTypeId='genderTypeId' to genderTypeId='\${genderTypeId}' in the first SQL query. This should fix a syntax error.