СПРАВОЧНЫЙ КЛЮЧ в node-orm2

Я работаю над REST API на основе node.js и выбрал postgresql база данных для хранения данных. Предположим, что в этой базе данных есть две таблицы имен User а также Comment, любой Comment принадлежит одному User и когда мы решим удалить User, Comment его / ее должны быть удалены. Итак, я разработал свою таблицу следующим образом:

CREATE TABLE User(
    user_id SERIAL,
    username VARCHAR(32) NOT NULL,
    password VARCHAR(32) NOT NULL,
    CONSTRAINT pk_user PRIMARY KEY (user_id),
    CONSTRAINT uq_user UNIQUE (username)
)

CREATE TABLE Comment(
    comment_id SERIAL,
    user_id INTEGER NOT NULL,
    content TEXT NOT NULL,
    CONSTRAINT pk_cmnt PRIMARY KEY (comment_id),
    CONSTRAINT fk_cmnt FOREIGN KEY (user_id) REFERENCES User(user_id)
        ON UPDATE CASCADE ON DELETE CASCADE
)

Но я не запускаю этот код и не использую node-orm2 вместо. Я разработал две простые модели для обработки этого простого кода:

var User = db.define('user', {
    username: {
        type: 'text',
        size: 32, // VARCHAR(32)
        required: true, // NOT NULL
        unique: true // UNIQUE INDEX
    },
    password: {
        type: 'text',
        size: 32, // VARCHAR(32)
        required: true // NOT NULL
    }
}, {
    id: 'user_id' //SERIAL
});

var Cmnt = db.define('comment', {
    content: {
        type: 'text',
        required: true // NOT NULL
    }
}, {
    id: 'comment_id' //SERIAL
});

Cmnt.hasOne('user', User, {required: true}); // CREATE ASSOCIATION KEY

и синхронизировать базу данных с этими моделями:

db.sync();

Теперь я хочу вставить новый комментарий, принадлежащий пользователю, которого user_id не существует. Итак Comment модель принимает это и вставляет строку в comment Таблица.

Мой вопрос, как я могу сделать некоторые вещи, как REFERENCE KEY и ON UPDATE CASCADE ON DELETE CASCADE?

Заранее спасибо:)

1 ответ

Попробуйте использовать deferrable, как это:

CREATE TABLE Comment(
    comment_id SERIAL,
    user_id INTEGER NOT NULL,
    content TEXT NOT NULL,
    CONSTRAINT pk_cmnt PRIMARY KEY (comment_id),
    CONSTRAINT fk_cmnt FOREIGN KEY (user_id) REFERENCES User(user_id)
        ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
)
Другие вопросы по тегам