【问题标题】:How to you get the last inserted ID with a raw query using Sequelize?如何使用 Sequelize 通过原始查询获取最后插入的 ID?
【发布时间】:2016-06-11 21:25:58
【问题描述】:

在 sequelize.js 中尝试以下原始 MySQL 插入时:

mysql_sequelize.query( 'INSERT IGNORE INTO steamer(steamer_id, prov_id, name, avatar) VALUES(UNHEX(REPLACE(UUID(),\'-\',\'\')), \'' + prov_id + '\', \'' + steamer_name + '\', \'' + steamer_avatar + '\')')
  .then(function (data) {
       console.log('inserted STEAMER data---> ',data);  // no useful info
  });
);

生成的控制台日志如下所示:

inserted STEAMER data--->  [ OkPacket {
    fieldCount: 0,
    affectedRows: 1,
    insertId: 0,
    serverStatus: 2,
    warningCount: 1,
    message: '',
    protocol41: true,
    changedRows: 0 },
  OkPacket {
    fieldCount: 0,
    affectedRows: 1,
    insertId: 0,
    serverStatus: 2,
    warningCount: 1,
    message: '',
    protocol41: true,
    changedRows: 0 } ]

我必须做什么才能获得以下数据的 ID?甚至是最后插入的 ID?

【问题讨论】:

  • 1 年后,抱歉我迟到了:D

标签: javascript mysql node.js sequelize.js


【解决方案1】:

您可以通过将{ type: sequelize.QueryTypes.INSERT } 作为选项参数传递来实现此目的。这将使 sequelize 返回插入它。

简单查询示例:

sequelize.query(
    "INSERT INTO clients (name) values ('myClient')",
    { type: sequelize.QueryTypes.INSERT }
).then(function (clientInsertId) {
    console.log(clientInsertId);
});

【讨论】:

  • 对于postgresql,你需要包含“返回id”
猜你喜欢
  • 2013-05-19
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多