PostgreSQL - Как вставить строки изображений Base64 в столбец BYTEA? - PullRequest
1 голос
/ 14 марта 2019

У меня есть следующий SQL:

CREATE TABLE Documents (
  Id INT NOT NULL,
  UserId INT NOT NULL,
  Label CHARACTER VARYING(220) NOT NULL,
  Image BYTEA NOT NULL,
  PRIMARY Key(Id),
  FOREIGN KEY (UserId) REFERENCES Users(Id)
);

Я хочу знать, как мне нужно вставить образ Base64 в таблицу.

Строка Base64 приходит из буфера изпосле получения изображения с помощью модуля fs на Node.js.

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

1 Ответ

1 голос
/ 14 марта 2019

Чтобы ответить на вопрос о Postgres и Sequelize:

Вам потребуется использовать тип данных Sequelize.BLOB('tiny') для моделирования типа BYTEA Postgres.

Вот дополнительная информация о типах данных в Sequelize (она также содержит вышеуказанную информацию):

http://docs.sequelizejs.com/manual/data-types.html

При преобразовании в крошечный BLOB-объект Postgres по умолчанию будет использовать utf-8, то есть вы, вероятно, захотите превратить ваши данные в кодировку utf-8, сохранить данные и прочитать их как utf-8.

РЕДАКТИРОВАНИЕ:

Вы будете использовать Base64 для кодирования двоичных данных изображения в строку ASCII: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

...