operation_sav модель определяется следующим образом:
operation_sav. js
module.exports = function(sequelize, DataTypes) {
var operation_sav = sequelize.define(
"operation_sav",
{
id: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: true,
unique: true
},
nom_operation: DataTypes.STRING,
status: {
type: DataTypes.ENUM(
"en_cours_livraison",
"en_reparation",
"repare",
"expedie"
),
defaultValue: "en_cours_livraison"
},
num_serie: DataTypes.STRING,
address_mac: DataTypes.STRING,
sous_garantie: DataTypes.BOOLEAN,
description: DataTypes.STRING,
adminId: DataTypes.INTEGER,
produitId: DataTypes.INTEGER,
status: {
type: DataTypes.ENUM(
"produit_recu",
"en_livraison",
"en_reparation",
"repare",
"en_expedition",
"expedie",
"annule"
),
defaultValue: "produit_recu"
}
},
{ timestamps: true }
);
return operation_sav;
};
Обратите внимание, что существует внешняя внешняя ключ adminId Взаимосвязь между таблицей Admin и таблицей Operation_sav определяется следующим образом:
/** admin Has Many operation_sav*/
model.operation_sav.belongsTo(model.admin, {
foreignKeyConstraint: true,
onDelete: "cascade"
});
model.admin.hasMany(model.operation_sav, {
foreignKeyConstraint: true,
onDelete: "cascade"
});
Это функция, которая создает строку в таблице Operation_sav :
var createSavOperation = function(operationInformation) {
return models.operation_sav.create(operationInformation);
};
Я использовал ее для создания этой строки:
{
"id": 4,
"nom_operation": "Répartion viwone plus",
"status": "produit_recu",
"num_serie": "5525ggffdd",
"address_mac": "ff:ff:ff:ff:ff",
"sous_garantie": true,
"description": "Panne bouton droit",
"adminId": 10,
"produitId": 6,
"updatedAt": "2020-02-27T09:22:47.430Z",
"createdAt": "2020-02-27T09:22:47.430Z"
}
Обратите внимание, что adminId равен 10 и operation_savId равен 4 . Поэтому я пытаюсь проверить, сработала ли вся ассоциация, запустив этот код:
models.operation_sav.findByPk(4).then(operation_sav => {
admin = models.admin.findByPk(10);
admin.hasOperation_sav(operation_sav);
});
Однако я получаю эту ошибку:
Необработанное отклонение TypeError: admin.hasOperation_sav is не функция
Это потому, что я вручную написал значение adminId при создании этой строки operation_sav ?
РЕДАКТИРОВАТЬ 1: Когда я добавил эту строку console.log:
admin = models.admin.findByPk(10);
console.log(admin instanceof models.admin); // false!!
admin.hasoperation_sav(operation_sav);
Я получил false , что не имеет никакого смысла, но это своего рода объясняет, почему sequelize не генерирует admin.hasoperation_sav не является функцией ошибка ..
РЕДАКТИРОВАТЬ 2: Я исправил РЕДАКТИРОВАТЬ 1 , как это :
models.admin.findByPk(10).then(adminFound => {
console.log(
"admin is instance of models.admin",
adminFound instanceof models.admin
); // true
adminFound.hasoperation_sav(operation_sav);
});
Но, hasoperation_sav по-прежнему не распознается как функция.