В настоящее время у меня есть моделирование для Sequlieze Model, как показано ниже:
const RideModel = sequelize.define(
"rides",
{
uuid: {
type: Sequelize.UUID,
primaryKey: true
},
pickup_time: {
type: Sequelize.DATE
},
fare: {
type: Sequelize.DOUBLE
},
commision_percentage: {
type: Sequelize.DOUBLE
}
},
{
hooks: {
beforeCreate: (ride, Option) => {
console.info("payment type updated hook");
PaymentType.findOne({
where: {
type: Option.paymentType
}
}).then(paymentType => {
console.info("Setting Payment Type");
ride.paymentType = paymentType;
Option.include.push({ as: "paymentType", model: PaymentType });
console.info(ride.paymentType);
});
}
}
}
);
В приведенном выше коде я ищу тип платежа, который будет сохранен в поездке.
На основании логов я вижу, что ловушка вызывается до того, как создается поездка. Даже внутри хука значение paymentType также установлено на поездку.
Единственное, что я не могу увидеть, чтобы paymentTypeUuid был сохранен в таблице «поездок» в MySQL DB. Не могли бы вы, ребята, сообщить мне возможное решение для достижения этой цели с помощью крючка?
ЖУРНАЛ:
Sync All Tables
payment type updated hook
Setting Payment Type
payment_types {
dataValues:
{ uuid: '111',
type: 'CASH',
description: 'CASH',
createdAt: 2019-03-09T08:54:19.000Z,
updatedAt: 2019-03-09T08:54:19.000Z },
_previousDataValues:
{ uuid: '111',
type: 'CASH',
description: 'CASH',
createdAt: 2019-03-09T08:54:19.000Z,
updatedAt: 2019-03-09T08:54:19.000Z },
_changed: {},
_modelOptions:
{ timestamps: true,
validate: {},
freezeTableName: true,
underscored: false,
underscoredAll: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: { type: 'CASH' },
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: [],
indexes: [],
name: { plural: 'payment_types', singular: 'payment_type' },
omitNull: false,
setterMethods: true,
sequelize:
Sequelize {
options: [Object],
config: [Object],
dialect: [MysqlDialect],
queryInterface: [QueryInterface],
models: [Object],
modelManager: [ModelManager],
connectionManager: [ConnectionManager],
importCache: {},
test: [Object] },
hooks: {},
uniqueKeys: { payment_types_type_unique: [Object] } },
_options:
{ isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [ 'uuid', 'type', 'description', 'createdAt', 'updatedAt' ] },
__eagerlyLoadedAssociations: [],
isNewRecord: false }
Create a new ride