【发布时间】:2022-01-28 05:30:12
【问题描述】:
我有一个模型 Transaction 与 hasMany 关联到 StripePayment。
我想用相关的StripePayment 创建一个新的Transaction,如下所示:
await models.Transaction.create({
amount,
stripePayment: {
stripeId: paymentIntent.id,
status: stripePaymentStatuses[status],
clientSecret: paymentIntent.client_secret,
}
});
这会创建一个新的交易,但不会创建 stripePayment。
我的模型是这样的:
// transaction model
class Transaction extends Model {
static associate(models) {
this.hasOne(models.StripePayment, {
as: 'StripePayment',
foreignKey: 'id'
});
}
}
Transaction.init(
{
id:{
allowNull: false,
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4
},
stripePaymentId: {
type: DataTypes.UUID,
allowNull: true,
foreignKey: true,
references: {
model: stripePayment,
key: 'id',
},
},
amount: {
type: DataTypes.INTEGER,
allowNull: false,
}
},
{
sequelize,
modelName: 'Transaction',
}
);
// stripePayment
class StripePayment extends Model {
static associate(models) {
this.belongsTo(models.Transaction, {
as: 'Transaction',
foreignKey: 'stripePaymentId'
});
}
}
StripePayment.init(
{
id:{
allowNull: false,
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4
},
// ...
},
{
sequelize,
modelName: 'StripePayment',
}
);
当我将它传递给create 方法时,我觉得模型不知道stripePayment。我的结构正确吗?
如何使用相关的StripePayment 创建Transaction?
【问题讨论】:
标签: javascript mysql node.js orm sequelize.js