title: Which ORM for node.js?
body: <p>I know this is a common question but i've done tests and i need some particular features!</p>
  
  <p>The features i need are:</p>
  
  <ul>
  <li>map properties to column names</li>
  <li>use a table name different from the model name</li>
  <li>support for soft-deletes (paranoid mode on sequelize)</li>
  <li>support for record timestamping (with the ability to specify, for every different model, the column name)</li>
  <li>support for foreign keys</li>
  <li>must support mysql and sqlite</li>
  <li>the architecture must support a model per file</li>
  </ul>
  
  <p>Optional features:</p>
  
  <ul>
  <li>cache (support for redis/memcache)</li>
  <li>command line tool to generate models from database</li>
  </ul>
  
  <p>I've tested:</p>
  
  <ol>
  <li>node-orm
  <ul>
  <li>to handle own column names you need a workaround</li>
  <li>soft deletes aren't supported and can't be supported even using an external plugin (i tried to wrote one using beforeRemove hook, but i can "stop" it from removing the record)</li>
  <li>don't support a model per file (you need a workaround)</li>
  </ul></li>
  <li>sequelize
  <ul>
  <li>don't create foreign keys</li>
  <li>can't map properties to column names</li>
  <li>support a model per file but it doesn't work very well (you need to put relationship in the file that include the models)</li>
  </ul></li>
  <li>node-persist
  <ul>
  <li>i don't like the need to specify the connection instance for everything</li>
  </ul></li>
  </ol>
  
  <p>Right now i'm going to test JugglingDB and Bookshelf.js (but i don't like too much the last one).</p>