获取最后插入的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));
- Node.js:从内部调用asynchronous调用的函数返回值
- 如何将jquery引导file upload插件中的自定义标头传递到节点服务器
- TypeError:对象函数(req,res,next){app.handle(req,res,next); }没有方法“configuration”
- 蓝鸟和mongoose:警告:一个承诺是在一个处理程序中创build的,但没有被返回
- 使用curl与authentication
- 如何在使用node.js服务器的iPhone Web应用程序上pipe理套接字连接?
- require()在大型的多文件节点项目中
- 如何使用已closures的ZeroMQ套接字来终止进程?
- 释放和维护nodejs的模块