Javascript 基于Node.js的数据库继承模型

Javascript 基于Node.js的数据库继承模型,javascript,database,node.js,postgresql,inheritance,Javascript,Database,Node.js,Postgresql,Inheritance,使用Node.js和类似SQL的数据库,在实现数据库继承模型时,我有哪些选择?我环顾四周,似乎由于Node.js中noSQL数据库的流行,数据库继承被忽略了 我试图完成一件非常简单的事情:基于一些业务规则扩展一个Users表。为了简单起见,我想添加属性不同的Reader和Moderator表和类。在.NET中使用NHibernate可以相对容易地实现这一点。我能在不把所有东西都放在同一张桌子上的情况下达到同样的结果吗?如果没有,最好的选择是什么 顺便说一句,我通过Sequelize将Node.j

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

我试图完成一件非常简单的事情:基于一些业务规则扩展一个Users表。为了简单起见,我想添加属性不同的Reader和Moderator表和类。在.NET中使用NHibernate可以相对容易地实现这一点。我能在不把所有东西都放在同一张桌子上的情况下达到同样的结果吗?如果没有,最好的选择是什么


顺便说一句,我通过Sequelize将Node.js与PostreSQL一起使用。

我还没有看到支持继承的SQL数据库ORM。即使如此,我相信由于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
}));
虽然我同意这是不一样的,但没有理由考虑这个问题:我认为它非常像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);

这是一个非常灵活的方法,允许has-a关系(行为),这对于水平重用非常有用。

这听起来是个不错的主意。我一定要试试这个!