¿Qué ORM debo usar para Node.js y MySQL? [cerrado]

326

Estoy reescribiendo un proyecto para usar Node.js. Me gustaría seguir usando MySQL como DB (aunque no me importa volver a escribir el esquema). Estoy buscando un ORM fácil de usar y de rendimiento razonable, que admita el almacenamiento en caché, las relaciones de muchos a uno y de muchos a muchos. De los ORM de MySQL que pude encontrar, la persistencia y la secuencia parecen las más maduras. ¿Tienes experiencia con alguno? ¿Cuáles son los pros y los contras relevantes que debo tener en cuenta en mi decisión?

Privman cercano
fuente
Pero es un tema muy interesante. ¿Le gustaría tener acceso a desarrolladores externos para cambiar los datos en su sitio? ¿Puede ser mejor idea crear una biblioteca js intermedia que envíe parámetros de solicitud (metalenguaje) a un back-end?
sergzach
2
@sergzach ¿Quieres elaborar? Google para "almacenamiento en caché de hibernación".
ponzao
Hm ... Algunos sitios permiten aplicaciones de usuario. O no te entendí, discúlpame por favor.
sergzach
2
@sergzach: el almacenamiento en caché es en realidad una característica bastante importante de una serie de soluciones ORM. Mire a Cayenne, por ejemplo.
Nate CK
Prueba con Oreo . github.com/will123195/oreo
Will

Respuestas:

101

¿Puedo sugerir Nodo ORM?

https://github.com/dresende/node-orm2

Hay documentación sobre el archivo Léame, es compatible con MySQL, PostgreSQL y SQLite.

MongoDB está disponible desde la versión 2.1.x (lanzada en julio de 2013)

ACTUALIZACIÓN: Este paquete ya no se mantiene, según el archivo README del proyecto. En su lugar, recomienda estantería y secuela

dresende
fuente
27
Según los documentos, parece que Sequelize está muy por delante de este proyecto.
Tony O'Hagan
Es otra gran opción para las personas que buscan mysql ORM. La sintaxis es más compleja, pero también agradable.
dresende
2
el proyecto ha cambiado URL: github.com/dresende/node-orm2
Capy
Recibo este error "Error: no se puede encontrar el módulo 'hat'" cuando intento implementar esto. .. ninguna cantidad de npm instalar o reinstalar parece ayudar. ¿Alguna sugerencia? Gracias
Gene Bo
1
Node-orm2 ya no se mantiene activamente. Se vincula a sequelize y bookshelf.js.
seebiscuit
150

Elegiría Sequelize por su excelente documentación. Es solo una opinión honesta (realmente nunca usé MySQL con Node tanto).

alessioalex
fuente
10
También me gustaría señalar que node-orm2 o persistence.js no proporcionan un mecanismo de migración. persistence.js no admite postgres. sequelize hace ambas cosas.
airtonix
44
Utilicé node-orm2 y, gracias a la mejor documentación de Sequelize, pude ponerlo en funcionamiento mucho más fácilmente
Michael J. Calkins el
2
@Gelidus ¿De dónde sacaste esta información?
William Lepinski
14
Lamentablemente, la documentación de Sequelize se ha vuelto terrible recientemente. Comencé a usar Sequelize recientemente y los documentos me complacieron bastante. Ahora es una pila autogenerada de enlaces rotos, información obsoleta y ejemplos incompletos. Aunque todavía me quedaré con eso. No es tan difícil de aprender.
Brad
2
Acabo de eliminar mi comentario anterior y ahora estoy 100% de acuerdo con @Brad, desafortunadamente :(
Andrey Popov
19

En primer lugar, tenga en cuenta que no he usado ninguno de ellos (pero he usado Node.js).

Ambas bibliotecas están bien documentadas y tienen una API estable. Sin embargo, persistence.js parece usarse en más proyectos . Sin embargo, no sé si todos lo siguen usando.

El desarrollador de sequelize a veces bloguea al respecto en blog.depold.com . Cuando desee utilizar claves principales como claves externas, necesitará el parche que se describe en esta publicación de blog . Si desea ayuda para persistence.js, hay un grupo de Google dedicado a ello.

De los ejemplos que deduzco, la secuencia es un poco más similar a JavaScript (más azúcar) que persistance.js, pero tiene soporte para menos almacenes de datos (solo MySQL, mientras que persistance.js incluso puede usar tiendas en el navegador).

Creo que la secuencia podría ser el camino a seguir para usted, ya que solo necesita soporte de MySQL. Sin embargo, si necesita algunas funciones convenientes (por ejemplo, búsqueda) o si desea utilizar una base de datos diferente más adelante, deberá utilizar persistence.js.

hey_lu
fuente
1
parece persistencejs.org ahora está apuntando a un sitio no deseado, solamente GitHub está trabajando
sansknwoledge
10

Una diferencia importante entre Sequelize y Persistence.js es que la primera admite un STRINGtipo de datos, es decir VARCHAR(255). Me sentí realmente incómodo haciendo todo TEXT.

Josh Smith
fuente
77
Actualmente Persistence.js también admite VARCHAR.
alehro
8
En bases de datos como PostgreSQL, TEXT y VARCHAR son exactamente iguales, la única diferencia es que si coloca un límite de bytes (VARCHAR (255)), entonces tiene una sobrecarga para verificar el límite. No hay absolutamente ningún problema en usar TEXT para todo en PostgreSQL.
reescrito el
3
Usar TEXT en PostgreSQL es en realidad la mejor práctica, incluso si no es portátil.
cowbert