Sequelize устанавливает PSQL в VARCHAR (255) независимо от того, скажу ли я ему TEXT (2048) или любую другую длину - PullRequest
0 голосов
/ 02 ноября 2018

Когда я следую инструкциям по созданию большего поля в psql с помощью sequelize, он все равно всегда выдвигает VARCHAR(255) при создании таблицы. Последовательность типов данных

Вот моя модель продолжения:

'use strict';

module.exports = (sequelize, DataTypes) => {
  const Message = sequelize.define(
    'Message',
    {
      message: {
        type: DataTypes.STRING(2048),
        allowNull: false,
        validate: {
          notEmpty: true
        }
      }
    },
    {}
  );
  Message.associate = function(models) {
    // associations can be defined here
  };
  return Message;
};

DataTypes.TEXT имеет тот же результат.

Вот SQL, который он выводит:

CREATE TABLE IF NOT EXISTS "Messages" ("id" SERIAL , "message" VARCHAR(255) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));

Когда я пытаюсь вставить большую строку (более 255 символов) в это поле, выдается следующая ошибка:

error: value too long for type character varying(255)

Я пробовал следующие проблемы с github в проекте, но, похоже, они не работают для меня. Соответствующие проблемы GitHub.

Спасибо за любую помощь.

Технические характеристики:

psql (PostgreSQL) 10.5

узел v10.4.0.

"dependencies": {
    "pg": "^7.5.0",
    "pg-hstore": "^2.3.2",
    "sequelize": "^4.39.0",
    "sequelize-cli": "^5.2.0"
  }

1 Ответ

0 голосов
/ 05 ноября 2018

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

ТЛ; др

Убедитесь, что у ваших миграций тот же тип данных, что и у вашей модели.

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