2012-10-05 8 views
5

Welche Optionen habe ich, wenn ich Node.js und eine SQL-ähnliche Datenbank verwende, um das Datenbankvererbungsmodell zu implementieren? Ich schaute mich um und es scheint, dass aufgrund der Popularität der NoSQL-Datenbank in Node.js, Datenbankvererbung übersehen wird.Datenbankvererbungsmodell mit Node.js

Ich versuche, eine sehr einfache Sache zu erreichen: Erweitern Sie eine Tabelle Benutzer basierend auf ein paar Geschäftsregeln. Der Einfachheit halber möchte ich Reader- und Moderator-Tabellen und -Klassen hinzufügen, deren Eigenschaften sich unterscheiden. Dies wäre in .NET mit NHibernate relativ einfach zu erreichen. Kann ich dasselbe Ergebnis erzielen, ohne alles in derselben Tabelle zu kleben? Wenn nicht, was sind die besten Alternativen?

Btw, ich benutze Node.js mit PostreSQL über Sequelize.

Antwort

5

Ich habe kein ORM für SQL-Datenbanken gesehen, die Vererbung noch unterstützt. Selbst dann glaube ich, gibt es andere Möglichkeiten dank der Natur von JS, die Sie genießen könnten (ich sicher):

Mit jugglingdb (die ich würde empfehlen), gekoppelt mit underscore.js (etwas, was die meisten node.js Programmierer sollten beachten Sie) Sie so etwas wie folgendes tun:

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

Während ich es nicht gleich zustimmen, es gibt keine Gründe, diese schlecht zu betrachten sind :) ich denke, es ist sehr JavaScript artig ist.

Auch wenn Sie Methoden/Validierungen wiederverwenden möchten, können Sie! Ordnen Sie es ihnen einfach zu (verwenden Sie die Funktionen erneut), oder wenn Sie eine Reihe von Funktionen erneut verwenden möchten, fügen Sie sie einem Objekt hinzu und erweitern Sie dann die Objekte Reader und Moderator. Zum Beispiel ...

Dies ist sehr flexibel und ermöglicht Has-a-Beziehungen (Verhaltensweisen), die ideal für die horizontale Wiederverwendung ist.

+0

Das klingt nach einer großartigen Idee. Ich versuche es definitiv! –