Ich benutze die Sequelize ORM in NodeJS, um eine PostgreSQL-Datenbank zu verwalten. Ich verwende den JSONB-Datentyp in meiner Tabelle, ich brauche einen Index für das JSONB-Feld und eine eindeutige Einschränkung für eine Eigenschaft dieses JSON. Wenn ich in einem klassischen SQL hier mein Skript zu tun habe:So erstellen Sie eine UNIQUE Einschränkung für ein JSONB Feld mit Sequelize
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));
Ich habe festgestellt, wie die Tabelle mit dem Index erstellen, aber nicht, wie man mit der UNIQUE-Einschränkung umgehen. Hier ist ein Beispiel für mein Skript:
var tableJson = sequelize.define('tableJson', {
content: Sequelize.JSONB
}, {
indexes: [{
fields: ['content'],
using: 'gin',
operator: 'jsonb_path_ops'
}
});
Gibt es eine Lösung für mein Problem? Wenn nicht, werde ich wahrscheinlich die sequelize.query-Methode verwenden, um eine rohe Abfrage auszuführen, aber das ist nicht sehr evolutiv.
Jede Hilfe wäre willkommen!