繁体   English   中英

node-orm2中的参考密钥

[英]REFERENCE KEY in node-orm2

我正在基于node.js的REST API上工作,我选择了postgresql数据库来存储数据。 假设此数据库有两个表,分别为UserComment 任何Comment属于一个User ,当我们决定删除一个User ,必须删除该UserComment 因此,我将表设计如下:

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 KEYON UPDATE CASCADE ON DELETE CASCADEON UPDATE CASCADE ON DELETE CASCADE

提前致谢 :)

尝试像这样使用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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM