带有Node.js的数据库inheritance模型

使用Node.js和一个类似于SQL的数据库,在实现数据库inheritance模型时,我有什么select? 我环顾四周,似乎由于Node.js中noSQL数据库的stream行,数据库inheritance被忽略了。

我试图完成一个非常简单的事情:基于一些业务规则扩展一个用户表。 为了简单起见,我想要添加读者和主持人的表和类的属性会有所不同。 这是在使用NHibernate的.NET中相对容易完成的事情。 我可以达到相同的结果,而不用粘在同一张表的所有内容? 如果不是,最好的select是什么?

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

       

网上收集的解决方案 "带有Node.js的数据库inheritance模型"

我还没有看到支持inheritance的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 })); 

虽然我同意这是不一样的,没有理由认为这不好:)我认为这是非常类似于JavaScript的。

另外,如果你想重新使用方法/validation,你可以! 只要将它们分配给它们(重新使用函数),或者如果你想重新使用一堆函数,把它们添加到一个对象中,然后扩展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); 

这是非常灵活的,并允许有一个关系(行为),这是横向重用的伟大。