Node.js的数据库继承模型

MK_*_*Dev 5 javascript database postgresql inheritance node.js

使用Node.js和类似SQL的数据库,在实现数据库继承模型时有哪些选择?我环顾四周,似乎由于Node.js中noSQL数据库的流行,数据库继承被忽略了.

我正在尝试完成一个非常简单的事情:基于一些业务规则扩展Users表.为简单起见,我想添加其属性不同的Reader和Moderator表和类.这是使用NHibernate在.NET中相对容易完成的事情.我可以在不使用同一个表中的所有内容的情况下获得相同的结果吗?如果没有,最好的选择是什么?

顺便说一句,我通过Sequelize使用Node.js和PostreSQL.

Mam*_*aac 5

我还没有看到支持继承的SQL数据库的ORM.即便如此,我相信还有其他机会归功于JS的本质,你可能会喜欢(我确实这样做):

使用jugglingdb(我推荐的那个),加上underscore.js(大多数node.js程序员应该注意的东西)你可以做类似下面的事情:

var user_common_properties = {
    name:         String,
    bio:          Schema.Text,
    approved:     Boolean,
    joinedAt:     Date,
    age:          Number
};
var User = schema.define('User', user_common_properties);

var Moderator = schema.define('Moderator', _.extend(user_common_properties, {
    power : String,
    level : Number
}));
var Reader = schema.define('Moderator', _.extend(user_common_properties, {
    lurker : Boolean
}));
Run Code Online (Sandbox Code Playgroud)

虽然我同意它不一样,但没有理由认为这很糟糕:)我认为它非常像JavaScript.

此外,如果您想重新使用方法/验证,您可以!只需将其分配给它们(重用函数),或者如果要重用一堆函数,将它们添加到对象中,然后扩展Reader和Moderator对象.例如...

var repeated_methods = {
    first : function () { },
    second: function () {}
};
//I want to reuse this for both User and Moderator but not for Reader...
User = _.extend(User, repeated_methods);
Moderator = _.extend(Moderator, repeated_methods);
Run Code Online (Sandbox Code Playgroud)

这非常灵活,允许有一种关系(行为),这对于水平重用非常有用.