获取最后插入的ID Sequelize

我正在使用Sequelize,并试图在原始查询中获取最后插入的ID。

我的查询是

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

查询完成,但成功事件的结果是null

有人可以帮忙吗?

谢谢。


伙计们,

经过一番研究和无数的尝试后,我明白了被调查对象是如何工作的。

请纠正我,如果我的回答是错误的。

被调用对象需要这种结构

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

在这种情况下,“parameterName”是将存储新ID的字段,sequelize查找__factory.autoIncrementField,以将其最后一次插入的id的值(其值(__factory.autoIncrementField的值))设置为属性。

所以,我的电话查询方法将是

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

这将导致这样的对象

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

感谢所有,我希望这可以帮助一个人。

是的,你的答案正在工作。 另一种方法是

 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) }) }) 

您必须在模型定义中添加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));