Ho scritto un ORM per Node.js chiamato node-data-mapper; è disponibile qui: https://www.npmjs.com/package/node-data-mapper. È un ORM per Node.js che utilizza il pattern data-mapper. Lo sviluppatore utilizza semplici vecchi oggetti JavaScript durante la lettura e la scrittura nel database. Le relazioni tra i tavoli non sono definite rigidamente, il che rende l'unione molto flessibile, a mio avviso comunque, sebbene alquanto dettagliata. L'algoritmo di mappatura dei dati effettivo è veloce e breve e la complessità è lineare (la trasformazione da dati DB tabulari a un oggetto JavaScript normalizzato viene eseguita in un ciclo).
Ho anche fatto del mio meglio per renderlo abbastanza fault tolerant. C'è una copertura del 100% del codice e, mentre so che non prova l'assenza di difetti, ho provato a testare il più accuratamente possibile.
Ho modellato l'interfaccia molto liberamente dopo Doctrine 1. (Ho usato LINQ, Doctrine 1 e 2 e Hibernate abbastanza ampiamente, e di quegli ORM mi piace l'interfaccia per Doctrine 1 il migliore. Node-data-mapper non è una porta JavaScript di Doctrine, comunque, e l'interfaccia è significativamente diversa.) L'interfaccia di query restituisce promesse usando il modulo deferred.
Ho modellato le condizioni (ad esempio le clausole WHERE e ON) dopo le condizioni di MongoDB. Si spera che ciò renda le condizioni un po 'intuitive fornendo allo stesso tempo un modo per fare query riusabili (in particolare, query SELECT complesse che possono essere filtrate in modo sicuro in molti modi diversi). Le condizioni sono trattate come un linguaggio specifico del dominio, sono lessate, analizzate e compilate.
In ogni caso, il modulo è qualcosa che uso nei miei progetti personali, ma mi piacerebbe ricevere un feedback da altri sviluppatori nella comunità! Ho provato a fornire molti esempi per far funzionare le persone rapidamente. Attualmente il modulo supporta solo MySQL, ma sto lavorando per aggiungere supporto per MSSQL.
Prova [StrongLoop] (http://strongloop.com/), è possibile associare i tipi alle tabelle e generare un client REST da utilizzare con l'API REST generata dai mapping. Non so se questo è quello che stai cercando, ma non fa male metterlo là fuori come un commento? :) – furier
@furier non sembra orm – pleerock