【发布时间】:2013-07-31 12:59:30
【问题描述】:
我正在研究基于 node.js 的 REST API,我选择了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 ?
提前致谢:)
【问题讨论】:
标签: node.js postgresql node-orm2