2012-10-05 17 views
5

Node.jsとSQLライクなデータベースを使用して、データベース継承モデルを実装する際の私の選択肢は何ですか?私は周りを見回し、Node.jsのnoSQLデータベースの人気のために、データベースの継承が見落とされているようです。Node.jsを使用したデータベース継承モデル

私は非常に単純なことを達成しようとしています。いくつかのビジネスルールに基づいてUsersテーブルを拡張します。簡単にするために、プロパティが異なる読者とモデレーターの表とクラスを追加したいと考えています。これは、NHibernateを使用して.NETで比較的簡単に達成できるものです。同じテーブル内のすべてを固執することなく同じ結果を達成できますか?そうでない場合、最良の選択肢は何ですか?

Btw、私はSequelize経由でPost.SQLでNode.jsを使用しています。

答えて

5

私はまだ継承をサポートするSQLデータベースのORMを見ていません。それでも、私は(私は確信しています)他の機会があるあなたが楽しむかもしれないとJSの性質のおかげで信じている:

jugglingdb(私が推薦する1)を使用して、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); 

これは非常に柔軟性があり、水平な再利用に適した関係(動作)が可能です。

+0

これは素晴らしいアイデアのようです。私は間違いなくこの試みを与えている! –

関連する問題