2012-04-10 11 views
11

Sono stato in cerca di una semplice implementazione dell'astrazione del database, quindi ho trovato l'ottimo articolo http://howtonode.org/express-mongodb, che è vecchio ma mi piace ancora l'idea.Livello astratto per il database Node.js

Beh, forse la costruzione, potrebbe prendere una sorta di oggetto letterale con le impostazioni del database. Quindi l'idea principale è che potrebbero esserci diverse implementazioni di UserService-s, ma localizzarle in diverse directory e richiedere solo quella necessaria.

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

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

Quando è necessario il database, I wil capito con var UserService = require(__dirname + '/data-layer/mongodb/user-service).UserService(db); dove var db = "open db object"

Questo sarebbe il modo corretto per farlo o c'è qualche soluzioni migliori?

+1

Molto promettente è JugglingDB: https://github.com/1602/jugglingdb Qui la documentazione: http: // jsdoc.info/1602/jugglingdb/ –

+0

potresti trovare questo un buon posto per avere idee http://mongodb.github.com/node-mongodb-native/github/github.html – christkv

+1

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

risposta

11

ci sono un paio di soluzioni, disponibili tramite NPM:

  • Node-DBI: "Node-DBI è una libreria strato di astrazione del database SQL, fortemente ispirato alla API PHP Zend Framework Zend_Db Fornisce funzioni unificate a lavorare. con più motori di database, attraverso le classi di adattatori. Al momento, i motori supportati sono mysql, mysql-libmysqlclient e sqlite3 ". Sembra che lo sviluppo sia stato sospeso.
  • Accessor: "Un wrapper di database, fornisce un facile accesso ai database." Supporta solo MySQL e MongoDB al momento.
  • Activerecord: "Un ORM scritto in Coffeescript che supporta più sistemi di database (SQL, NoSQL e anche REST) ​​e middleware di generazione ID. È completamente estensibile per aggiungere nuovi sistemi di database e plug-in."
7

ho pensato che potrebbe essere il momento di aggiornare la risposta di una vecchia questione:

Se si desidera utilizzare MongoDB come document-oriented database, mongoose è una buona scelta e facile da usare (ad esempio dal sito ufficiale) :

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

Per un approccio piuttosto moderno, è un buon Mongorito ODM che utilizza ES6 generatori invece di callback.

Al 06,2015 mi sa che la migliore ORM per database SQL con Node.JS/io.js è Sequelize sostenendo i seguenti database:

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • MSSQL

L'installazione è 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'); 

Fornisce inoltre transactions, migrations e molte altre chicche.

+1

Vero per i database basati su SQL Sequelize ORM è un'ottima scelta. –

+0

@RistoNovik buon punto! Aggiornerà la risposta :) –

+0

Grazie per il suggerimento di sequelize, è fantastico :) – kabirbaidhya

Problemi correlati