5

Node.jsとSQLのようなデータベースを使用して、データベース継承モデルを実装する場合の私のオプションは何ですか?周りを見回したところ、Node.jsでのnoSQLデータベースの人気により、データベースの継承が見落とされているようです。

私は非常に単純なことを達成しようとしています。いくつかのビジネスルールに基づいてUsersテーブルを拡張します。簡単にするために、プロパティが異なるReaderテーブルとModeratorテーブルおよびクラスを追加したいと思います。これは、NHibernateを使用して.NETで比較的簡単に実行できるものです。同じテーブルにすべてを貼り付けることなく、同じ結果を達成できますか?そうでない場合、最良の選択肢は何ですか?

ところで、私はSequelizeを介してPostreSQLでNode.jsを使用しています。

4

1 に答える 1

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
}));

私はそれが同じではないことに同意しますが、これを悪いと考える理由はありません:)私はそれが非常に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);

これは非常に柔軟性があり、水平方向の再利用に最適な関係(動作)を可能にします。

于 2012-10-05T03:19:41.023 に答える