Отношения многие ко многим Sequelize Node JS Массив атрибутов - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть модель работы

    module.exports = (sequelize, Datatypes) => {
  const Jobs = sequelize.define('Jobs', {
    jobinput: {
      type: Datatypes.STRING
    },
    typeinput: {
      type: Datatypes.STRING
    },
    jobdescinput: {
      type: Datatypes.TEXT('medium')
    },
    locationinput: {
      type: Datatypes.STRING
    },
    salarymininput: {
      type: Datatypes.INTEGER
    },
    salarymaxinput: {
      type: Datatypes.INTEGER
    },
    seniorityinput: {
      type: Datatypes.STRING
    },
    vacancyinput: {
      type: Datatypes.INTEGER
    },
    bountyinput: {
      type: Datatypes.INTEGER
    }
  })
  Jobs.associate = function (models) {
    Jobs.belongsTo(models.User)
    Jobs.belongsTo(models.Company)
    Jobs.belongsToMany(models.JobSkills, { through: models.JobHasSkills, foreignKey: 'JobId' })
  }

  return Jobs
}

и модель JobSkill

module.exports = (sequelize, Datatypes) => {
  const JobSkills = sequelize.define('JobSkills', {
    skill: {
      type: Datatypes.STRING,
      unique: true
    }
  })
  JobSkills.associate = function (models) {
    JobSkills.belongsToMany(models.Jobs, { through: models.JobHasSkills, foreignKey: 'JobSkillId' })
  }
  return JobSkills
}

и модель «многие ко многим» JobHasSkills

module.exports = (sequelize, Datatypes) => {
  const JobHasSkills = sequelize.define('JobHasSkills', { })
  JobHasSkills.associate = function (models) {
    JobHasSkills.belongsTo(models.Jobs)
    JobHasSkills.belongsTo(models.JobSkills)
  }
  return JobHasSkills
}

, и я пыталсясделать функцию создания

async create (req, res) {
   try {
     await Jobs.create(req.body, { include: { model: JobSkills } })
       .then(function (createdObjects) {
         res.json(createdObjects)
       })
   } catch (err) {
     res.status(500).send({
       error: 'an error has occured while posting'
     })
   }
 }

Мои данные Json, которые я отправил через почтальона:

    { "jobinput": "Title",
     "typeinput": "Part Time",
     "jobdescinput": "lorem ipsum",
     "locationinput": "California",
     "salarymininput": "0",
     "salarymaxinput": "1000",
     "seniorityinput": "Internship",
     "vacancyinput": "1",
     "bountyinput": "10",
     "skills": ["skill1","skill2","skill3" ] 
   }

Я проверил этот ответ Попытка создать экземпляр и несколько связанных экземпляров вотношения многие ко многим

Но я получал улов (ошибка).Это мой первый проект с узлом js и sequelize.Может ли кто-нибудь помочь мне в этом

1 Ответ

0 голосов
/ 27 февраля 2019

Если ваши таблицы не создаются, то, пожалуйста, используйте -

 sequelize.define(
    "Table Name"
    {
      Model Definations
    },
    {
        underscored: false,// Not Required in your case
        timestamps: false// Not Required in your case
    }
).sync({ force: true });

После того, как таблицы созданы, прокомментируйте параметр Синхронизация, в противном случае при каждом перезапуске таблиц будут удалены и созданы заново.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...