2012-04-10 10 views
11

Ich habe mich für einfache Datenbankabstraktion Implementierung gesucht, dann fand ich tollen Artikel http://howtonode.org/express-mongodb, die alt, aber ich mag immer noch die Idee.Abstract Layer für Node.js Datenbank

Nun vielleicht die Konstruktion, könnte eine Art von Objekt Literal mit Datenbankeinstellungen nehmen. Also die Hauptidee ist, dass es verschiedene Implementierungen von UserService-s geben könnte, aber in verschiedenen Verzeichnissen suchen und nur das eine benötigen würde.

/data-layer/mongodb/user-service.js 
        /post-service.js 
        /comment-service.js 

/data-layer/couchdb/user-service.js 
        /post-service.js 
        /comment-service.js 

Wenn die Datenbank benötigt wird, wil ich es mit var UserService = require(__dirname + '/data-layer/mongodb/user-service).UserService(db);, wo var db = "open db object"

dies dem richtigen Weg sein würde, es zu tun oder ist es bessere Lösungen?

+1

Sehr vielversprechend ist JugglingDB: https://github.com/1602/jugglingdb Hier die Dokumentation: http: // jsdoc.info/1602/jugglingdb/ –

+0

Sie könnten dies ein guter Ort finden, um Ideen zu erhalten http://mongodb.github.com/node-mongodb-native/github/github.html – christkv

+1

Check out [JSData] (http: // www .js-data.io/). – orad

Antwort

11

Es gibt ein paar Lösungen, erhältlich über NPM:

  • Node-DBI: „Node-DBI ist eine SQL-Datenbank-Abstraktionsschicht Bibliothek, inspiriert stark von der PHP Zend Framework Zend_Db API Es einheitliche Funktionen zur Verfügung zu arbeiten. mit mehreren Datenbank-Engines, über Adapter-Klassen. Zu diesem Zeitpunkt sind die unterstützten Engines mysql, mysql-libmysqlclient und sqlite3 ". Sieht so aus, als ob die Entwicklung pausiert wurde.
  • Accessor: "Ein Datenbank-Wrapper, bieten einfachen Zugriff auf Datenbanken." Unterstützt momentan nur MySQL und MongoDB.
  • Activerecord: "Ein in Coffeescript geschriebenes ORM, das mehrere Datenbanksysteme (SQL, NoSQL und sogar REST) ​​sowie Middleware zur ID-Generierung unterstützt. Es ist vollständig erweiterbar, um neue Datenbanksysteme und Plugins hinzuzufügen."
7

ich aber könnte es Zeit sein, die Antwort einer alten Frage zu aktualisieren:

Wenn Sie MongoDB als document-oriented database verwenden, mongoose ist eine gute Wahl und leicht zu bedienen (zB von der offiziellen Website) :

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 

var Cat = mongoose.model('Cat', { name: String }); 

var kitty = new Cat({ name: 'Zildjian' }); 
kitty.save(function (err) { 
    if (err) // ... 
    console.log('meow'); 
}); 

Für einen eher modernen Ansatz ist Mongorito eine gute ODM die ES6 Generatoren statt Rückrufe verwendet.

Ab 06,2015 Ich rechne damit, dass die beste ORM für SQL-Datenbanken mit Node.js/io.js ist Sequelize die folgenden Datenbanken unterstützt:

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • MSSQL

Das Setup ist fairly easy:

var sequelize = new Sequelize('database', 'username', 'password', { 
    host: 'localhost', 
    dialect: 'mysql' 
}); 

// Or you can simply use a connection uri 
var sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname'); 

Es bietet auch transactions, migrations und viele andere Leckereien.

+1

True für die SQL-basierten Datenbanken Sequelize ORM ist eine gute Wahl. –

+0

@RistoNovik guter Punkt! Wird die Antwort aktualisieren :) –

+0

Danke für die Fortsetzung vorschlagen, es ist genial :) – kabirbaidhya