Sequelize bulkCreate, не включая новые добавленные столбцы - PullRequest
0 голосов
/ 25 сентября 2018

Мне трудно понять, почему массовое создание не будет включать в себя мои два вновь созданных столбца, возможно, это миграция?

Моя новая миграция выглядит следующим образом:

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    queryInterface.addColumn('users', 'brand_id', {
      allowNull: true,
      type: Sequelize.INTEGER,
      defaultValue: null,
    });

    queryInterface.addColumn('users', 'store_id', {
      allowNull: true,
      type: Sequelize.INTEGER,
      defaultValue: null,
    });    

    return true;
  },

  down: (queryInterface, Sequelize) => {
    queryInterface.removeColumn('users', 'brand_id');
    queryInterface.removeColumn('users', 'store_id');
    return true;
  }
};

У меня естьвспомогательная функция для создания нескольких пользователей с целью тестирования, которая выглядит примерно так:

const properties = { brand_id: 123 };
const user = [];
users.push(Object.assign({}, {
  name: chance.last(),
  email: chance.email(),
  password,
  access_key: uuid(),
}, properties));

const newUsers = await models.user.bulkCreate(users, { returning: true, logging: console.log });

Вывод журнала:

INSERT INTO "users" ("id","name","email","password","access_key","created_at","updated_at") VALUES (DEFAULT,'Valente','letubdo@iwefa.fm','$2a$08$B5riQzA82ChwuH1q8HpGxOBK2uQj2m.BiHcEjytiox5yD.8u1fT5W','e62bf96c-0117-490f-9c80-b60e406238b0','2018-09-25 18:30:04.666 +00:00','2018-09-25 18:30:04.666 +00:00') RETURNING *;

Вы увидите, что brand_id полностьюигнорируется в запросе, даже если я изменю следующее:

users.push(Object.assign({}, {
  name: chance.last(),
  email: chance.email(),
  password,
  access_key: uuid(),
  brand_id: 123,
}, properties));

Есть идеи, что может быть не так?

1 Ответ

0 голосов
/ 25 сентября 2018

Оказывается, я не добавил две новые колонки в модель пользователя:

'use strict';
module.exports = (sequelize, DataTypes) => {
  var user = sequelize.define('user', {
    name: {
      allowNull: false,
      type: DataTypes.STRING
    },
    email: {
      allowNull: false,
      type: DataTypes.STRING
    },
    password: {
      allowNull: false,
      type: DataTypes.STRING
    },
    access_key: {
      allowNull: false,
      type: DataTypes.STRING
    },
    brand_id: {
      allowNull: true,
      true: DataTypes.INTEGER,
    },
    store_id: {
      allowNull: true,
      true: DataTypes.INTEGER,
    }    
  }, {
    underscored: true,
  });
  return user;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...