Tengo una Transaction modelo con una asociación hasMany a StripePayment .
Quiero crear una nueva Transaction con un StripePayment relacionado así:
await models.Transaction.create({ amount, stripePayment: { stripeId: paymentIntent.id, status: stripePaymentStatuses[status], clientSecret: paymentIntent.client_secret, } });Esto crea una nueva Transacción pero no crea el stripePayment.
Mi modelo es como tal:
// 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', } ); Siento que el modelo no es consciente de stripePayment cuando lo paso al método de create . ¿Estoy estructurando esto correctamente?
¿Cómo puedo crear una Transaction con un StripePayment relacionado?
Solo necesita indicar la opción de include al llamar al método de create , consulte la creación con asociaciones :
await models.Transaction.create({ amount, // pay attention: this prop should be named exactly as an alias of a model and because it's `hasMany` you should wrap it into an array StripePayment: [{ stripeId: paymentIntent.id, status: stripePaymentStatuses[status], clientSecret: paymentIntent.client_secret, }], include: [{ model: StripePayment, as: 'StripePayment', }] });