Последний раз вставил ID Sequelize

Я использую Sequelize, и я пытаюсь получить последний вставленный идентификатор в необработанном запросе.

Мой запрос

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

Запрос выполняется отлично, но результат успешного события равен нулю.

Может кто-нибудь помочь?

Спасибо.


Ребят,

после некоторых исследований и попыток zillions, я понял, как работает объект callee в sequelizeJs.

пожалуйста, исправьте меня, если мой ответ неверен.

объект вызываемого объекта нуждается в этой структуре

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

в этом случае "parameterName" - это поле, в котором будет сохранен новый идентификатор; sequelize ищет __factory.autoIncrementField, чтобы установить значение последнего вставленного id в свойство со своим значением (значение __factory.autoIncrementField).

поэтому мой метод запроса к запросу будет

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

это приведет к созданию такого объекта

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

спасибо всем, и я надеюсь, что это может помочь кому-то.

Ответ 1

Да, ваш ответ работает. Другой способ:

var Sequelize = require("sequelize")
var sequelize = new Sequelize('test', 'root', 'root', {dialect: 'mysql'})

var Page = sequelize.define( 'page', {
  type  : {type: Sequelize.STRING(20)},
  order : {type: Sequelize.INTEGER, defaultValue: 1}
},{
  timestamps: false,
  underscored: true
})

Page.__factory = {autoIncrementField: 'id'}
Page.id = ''

sequelize.query('INSERT INTO pages SET `type` = ?, `order` = ?, `topic_version_id` = ?', Page, {raw: false}, ['TEXT', 1, 1] ).success(function(page) {
  console.log(page)
  Page.find(page.id)
    .success(function(result){
      console.log(result)
    })

})

Ответ 2

В определении модели вам нужно добавить свойство autoIncrement.

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

Затем вы можете получить доступ к последнему вставленному id с свойством в определении модели.

Article.create(article)
  .then(result => console.log(result.id));