我还没有看到支持继承的 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。
此外,如果您想重用方法/验证,您可以!只需将其分配给它们(重复使用函数),或者如果您想重复使用一堆函数,请将它们添加到一个对象,然后扩展 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);
这是非常灵活的,并且允许有关系(行为),这对于横向重用非常有用。