継承をサポートする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);
これは非常に柔軟性があり、水平方向の再利用に最適な関係(動作)を可能にします。