2012-04-10 44 views
11

He estado buscando una implementación simple de abstracción de bases de datos, entonces encontré un gran artículo http://howtonode.org/express-mongodb, que viejo pero todavía me gusta la idea.Capa abstracta para la base de datos Node.js

Bueno, tal vez la construcción, podría tomar algún tipo de objeto literal con la configuración de la base de datos. Así que la idea principal es que podría haber diferentes implementaciones de UserService-s, pero ubicarlas en diferentes directorios y requerir solo la que se necesita.

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

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

Cuando se necesita la base de datos, que duraran lo entiendo con var UserService = require(__dirname + '/data-layer/mongodb/user-service).UserService(db); donde var db = "open db object"

¿Sería ésta la forma correcta de hacerlo o hay alguna solución mejor?

+1

Muy prometedor es JugglingDB: https://github.com/1602/jugglingdb Aquí la documentación: http: // jsdoc.info/1602/jugglingdb/ –

+0

puede encontrar este un buen lugar para obtener ideas http://mongodb.github.com/node-mongodb-native/github/github.html – christkv

+1

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

Respuesta

11

Hay algunas soluciones, disponibles a través de la NGP:

  • Node-DBI: "Nodo-DBI es una biblioteca de capa de abstracción de base de datos SQL, fuertemente inspirado por la API PHP Zend Framework Zend_Db Proporciona funciones unificadas para trabajar. con motores de bases de datos múltiples, a través de clases de adaptadores. En este momento, los motores compatibles son mysql, mysql-libmysqlclient y sqlite3 ". Parece que el desarrollo se ha detenido.
  • Accessor: "Un contenedor de base de datos, proporciona un fácil acceso a las bases de datos." Soporta solo MySQL y MongoDB en este momento.
  • Activerecord: "Un ORM escrito en Coffeescript que admite múltiples sistemas de bases de datos (SQL, NoSQL e incluso REST), así como middleware de generación de ID. Es totalmente extensible agregar nuevos sistemas de bases de datos y complementos".
7

que a pesar de que podría ser el momento para actualizar la respuesta de una vieja pregunta: ¿

Si desea utilizar MongoDB como su document-oriented database, mongoose es una buena opción y fácil de usar (ejemplo desde el sitio oficial) :

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

Para un enfoque más moderno, Mongorito es una buena ODM que utiliza ES6 generadores en lugar de devoluciones de llamada.

A partir de 06,2015 Me parece que la mejor ORM de bases de datos SQL con Node.js/io.js se Sequelize apoyando las siguientes bases de datos:

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • MSSQL

La configuración es 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'); 

También proporciona transactions, migrations y muchas otras golosinas.

+1

Verdadero para bases de datos SQL Sequelizar ORM es una gran opción. –

+0

@RistoNovik ¡buen punto! Actualizará la respuesta :) –

+0

Gracias por sugerir la secuencia, es increíble :) – kabirbaidhya

Cuestiones relacionadas