Как вставить данные в таблицу мостов / сопоставлений с помощью Sequelize.js - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь вставить данные в таблицу мостов / сопоставлений, используя sequelize.js

. Я определил Статьи как -

const Articles = db.define('article', {
    "slug": {
      type: Sequelize.STRING,
      primaryKey: true,
      allowNull:false
    },
    "title": {
      type: Sequelize.STRING(50),
      allowNull: false
    },
    "description": {
      type: Sequelize.STRING(100),
    },
    "body": Sequelize.STRING,
  })

, а Теги - как

const Tags = db.define('tag', {
    name: {
      type: Sequelize.STRING,
      primaryKey: true
    }
})

Я создал связь между многими из них как

Articles.belongsToMany(Tags, {through:'article_tags'})
Tags.belongsToMany(Articles, {through:'article_tags'})

Это создало таблицу article_tags в моей базе данных вместе со статьями и тегами.Но теперь, как я могу вставить данные в эту таблицу моста article_tags, используя sequelize?

1 Ответ

0 голосов
/ 30 мая 2019

Вы также должны смоделировать эту таблицу сопоставления .... тогда, когда вы в решателе для произнесения что-то вроде "tagArticle", вы просто вызовете функцию создания в таблице сопоставления с идентификатором статьи и идентификаторомтега ... вот пример распознавателя для таблицы соединений, которую я имею, где я присоединяю дилеров к счетам

createUserAccountDealer: async (_, args, { models }) => {

      let returnValue = null;
      const { username, input } = args;
      try {
        returnValue = await models.ProfileDealerInfo.create(input);

        if (returnValue && returnValue.dataValues.id) {
          const tempJoin = { username, dealer_id: returnValue.dataValues.id };
          await models.ProfileAccountDealer.create(tempJoin);
        }
      } catch (err) {
        logger.error(err);
      }
      return returnValue;
    }

Разница для меня в том, что дилер является дочерним предприятием, поэтому ясделайте запись присоединения сразу после создания записи дочернего дилера ... Ваш пример - небольшая разница, где теги и статьи могут уже существовать, и вы можете просто связывать их, то есть идентификаторы будут просто передаваться в аргументах от клиента, и выне будет лишнего шага ожидания для получения идентификатора из дочерней записи. create

...