отношение один-ко-многим, используя перо - PullRequest
0 голосов
/ 24 января 2019

Существует 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]
    }
  }
}
...