Последний раз вставил 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));