Существует userModel
и movieModel
, где у пользователя может быть много фильмов. Я хочу реализовать это с помощью отношений один ко многим. При добавлении пользователей я также добавляю фильмы, но этого не происходит. И правильно ли это отношение для данной проблемы?
Вот это userModel
:
const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;
module.exports = function (app) {
const sequelizeClient = app.get('sequelizeClient');
const users = sequelizeClient.define('users', {
email: {
type: DataTypes.TEXT,
allowNull: false
},
password: {
type: DataTypes.TEXT,
allowNull: false
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
users.associate = function (models) { // eslint-disable-line no-unused-vars
users.hasMany(models.movietable,{foreignKey: "userId"})
};
return users;
};
Вот это movieModel
const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;
module.exports = function (app) {
const sequelizeClient = app.get('sequelizeClient');
const movie = sequelizeClient.define('movietable', {
id:{
type:DataTypes.INTEGER,
primaryKey: true
},
name: {
type: DataTypes.TEXT,
allowNull: false
},
description: {
type:DataTypes.TEXT
},
category: {
type:DataTypes.TEXT
},
rating: {
type:DataTypes.INTEGER
},
createdAt: {
type:DataTypes.DATE
},
updatedAt: {
type:DataTypes.DATE
},
isFav: {
type:DataTypes.BOOLEAN,
defaultValue: "false"
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
movie.associate = function (models) { // eslint-disable-line no-unused-vars
movie.belongsTo(models.users,{foreignKey: "userId"})
};
return movie;
};
expected result: {
"email": "abc@gmail.com",
"movie":[
{
"name": "1223",
"id": "1"
}, {
"name": "abc",
"id": 2
}
]
}
actual result:
{
"email": "abc@gmail.com"
}
Вот хук, который я создал для userModel
const defaults= {}
module.exports= function(options) {
options=Object.assign({},defaults,options)
return function(hook) {
hook.params.sequelize= {
include:[hook.app.services.movie.Model]
}
}
}