typeorm sequelize para orm2 node javascript mysql node.js orm

javascript - sequelize - typeorm



¿Qué ORM para node.js? (2)

Bookshelf debería admitir todos esos:

  1. La asignación de columnas a nombres de propiedades con los métodos de format y parse .
  2. Usando un nombre de tabla diferente con el atributo tableName .
  3. La marca de tiempo puede tomar columnas personalizadas con el atributo hasTimestamp .
  4. Las claves foráneas se pueden definir con el generador de esquemas de Knex ... no están bien documentadas, pero puede ver un ejemplo en las pruebas here
  5. Soporta mysql, sqlite y postgres
  6. Definitivamente admite un modelo por archivo ... las relaciones se definen en métodos, por lo que puede hacer:

    var Classroom = Bookshelf.Model.extend({ tableName: ''classrooms'', student: function() { // Relating to a model from a file in the same directory. return this.hasMany(require(''./student'')); } }); new Classroom({id: 1}) .fetch({withRelated: [''students'']) .then(function(classroom) { console.log(JSON.stringify(classroom)); });

El soporte oficial de eliminación de software está en proceso, pero definitivamente se logra extendiendo el modelo y proporcionando un nuevo método de destrucción como el siguiente:

destroy: function(options) { if (options.softDelete) { return this.save({''deleted_at'': new Date}); } return bookshelf.Model.prototype.destroy.call(this, arguments); }

Todavía no se engancha en una memoria caché, porque la invalidación de la memoria caché en las relaciones es bastante complicada, definitivamente algo a considerar.

Si ve algo que parece faltar, siéntase libre de abrir un ticket.

Sé que esta es una pregunta común, pero he hecho pruebas y necesito algunas características particulares.

Las características que necesito son:

  • mapear propiedades a nombres de columna
  • use un nombre de tabla diferente al nombre del modelo
  • soporte para borrados suaves (modo paranoico en la secuela)
  • Compatibilidad con la marca de tiempo de registro (con la capacidad de especificar, para cada modelo diferente, el nombre de la columna)
  • soporte para llaves foráneas
  • debe soportar mysql y sqlite
  • La arquitectura debe soportar un modelo por archivo.

Características opcionales:

  • caché (soporte para redis / memcache)
  • Herramienta de línea de comandos para generar modelos desde la base de datos.

He probado:

  1. nodo-orm
    • para manejar los propios nombres de columna necesita una solución
    • las eliminaciones de software no son compatibles y no se pueden admitir incluso con un complemento externo (intenté escribir uno usando el enlace anterior Quitar, pero puedo "detenerlo" de eliminar el registro)
    • no es compatible con un modelo por archivo (necesita una solución)
  2. secuela
    • no crear claves externas
    • no se pueden asignar propiedades a nombres de columna
    • admite un modelo por archivo, pero no funciona muy bien (es necesario colocar una relación en el archivo que incluya los modelos)
  3. persistencia de nodo
    • No me gusta la necesidad de especificar la instancia de conexión para todo.

Ahora mismo voy a probar JugglingDB y Bookshelf.js (pero no me gusta mucho el último).


Puede echar un vistazo a light-orm: https://github.com/knyga/light-orm ORM simple. No cree claves externas. No se pueden asignar propiedades a los nombres de columna. Pero podría estar conectado a cualquier rdbms, y super simple.