node.js のSequelize orm を使用してアプリを構築するためのcockroachdb の例に従いながら、それを拡張してモデル間の関連付けを追加しました。主キーは、unique_rowid() による自動インクリメントの INT です。ドキュメントに基づくと、これはSERIALの実装です。
モデルを同期した後、次のコードを使用してレコードを作成しようとしました。
models.sequelize.sync({ force: true })
.then(function () {
return models.Customer.create({
name: "Sample Customer"
})
})
.then(function (result) {
const id = parseInt(result.dataValues.id, 10)
return models.Order.bulkCreate([
{ subtotal: 100.00, customer_id: id },
{ subtotal: 200.00, customer_id: id }
])
})
これを実行すると、「error: foreign key violation: value [255737842446434300] not found in customers@primary [id]
」が表示されます
私のparseIntは、顧客の作成から返された文字列 ID を取得するために必要な精度を持っていないように見えますが、これを達成する方法がわかりません。