21

Sequelize を使用しており、生のクエリで最後に挿入された ID を取得しようとしています。

私のクエリは

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

クエリは完全に実行されますが、成功イベントの結果はnullです。

誰か助けてくれませんか?

ありがとう。


いくつかの調査と無数の試みの後、呼び出し先オブジェクトがsequelizeJsでどのように機能するかを理解しました。

私の答えが間違っている場合は、私を修正してください。

呼び出し先オブジェクトにはこの構造が必要です

{__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 }

すべてに感謝します。これが誰かの助けになることを願っています。

4

2 に答える 2