Я использую Sequelize ORM в NodeJS для управления базой данных postgreSQL. Я использую тип данных JSONB в своей таблице, мне нужен индекс для поля JSONB и уникальное ограничение для свойства этого JSON. Если мне нужно сделать в классическом SQL вот мой скрипт:
CREATE TABLE tableJson (id SERIAL PRIMARY KEY,
content JSONB NOT NULL);
CREATE INDEX j_idx ON tableJson USING gin(content jsonb_path_ops);
CREATE UNIQUE INDEX content_name_idx ON tableJson(((content->>'name')::varchar));
Я нашел, как создать таблицу с ИНДЕКСОМ, но не нашел, как справиться с ограничением UNIQUE. Вот пример моего скрипта:
var tableJson = sequelize.define('tableJson', {
content: Sequelize.JSONB
}, {
indexes: [{
fields: ['content'],
using: 'gin',
operator: 'jsonb_path_ops'
}
});
Есть ли решение моей проблемы? Если нет, я, вероятно, буду использовать метод sequenceize.query для выполнения необработанного запроса, но это не очень эволюционно.
Любая помощь будет оценена по достоинству!