Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get last inserted id Sequelize

Tags:

I'm using Sequelize and I'm trying to get the last inserted ID in raw query.

My query is

.query(Sequelize.Utils.format(["insert into MyTable (field1, field2) values (?,?)", val1, val2])

The query is done perfectly, but the result on success event is null.

Can someone help?

Thanks.


After some researches and zillions attempts, I understood how callee object work in sequelizeJs.

please, correct me if my answer is wrong.

the callee object needs this structure

{__factory:{autoIncrementField: 'parameterName'}, parameterName: '' }

in this case "parameterName" is the field that will store the new ID, sequelize looks for __factory.autoIncrementField to set value of last inserted id into property with its value (value of __factory.autoIncrementField).

so, my call to querys method would be

.query(sequelize.Utils.format(tempInsert), {__factory:{autoIncrementField: 'parameterName'}, parameterName: '' }, {raw: true})

this will result in object like that

{ __factory: { autoIncrementField: 'parameterName' }, parameterName: newInserted_ID }

thanks for all, and I hope this can help someone.

like image 270
ops.rio Avatar asked May 23 '13 20:05

ops.rio


People also ask

How do I get the last inserted ID in Sequelize node JS?

in this case "parameterName" is the field that will store the new ID, sequelize looks for __factory. autoIncrementField to set value of last inserted id into property with its value (value of __factory. autoIncrementField).


1 Answers

You have to add autoIncrement property in model definition.

const Article = sequelize.define('articles', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true
  }, {},
  {
   createdAt: false,
   updatedAt: false
  });

Then, you can access last inserted id with property in model definition.

Article.create(article)
  .then(result => console.log(result.id));
like image 134
MiraGe Avatar answered Sep 19 '22 08:09

MiraGe