title: sequelize for NodeJS: are these features supported?
body: <p>Here are some questions about features supported by sequelize (<a href="http://sequelizejs.com" rel="noreferrer">sequelize project site</a>) that I would like to clear up before deciding whether or not to use it:</p>
  
  <ol>
  <li><p>Chaining (efficiency): when chaining multiple queries, are these collected into one request to the database (as a batch of operations), or is each one sent separately?</p></li>
  <li><p>Chaining (success/error): when chaining multiple queries, when is the success event emitted and what happens on error? Is "success" emitted only if <em>all</em> operations succeeded? And if there was an error, does it rollback all operations (i.e. are the chained operations treated as a transaction)</p></li>
  <li><p>Filtering associations: Say a <code>Crowd</code> object has the relation <code>Crowd.hasMany(Person)</code>. You can get all the associated people by executing <code>crowd.getPersons()</code>, but is it possible to select a subset of them, like <code>crowd.getPersons({where: { age: 30 }})</code>?</p></li>
  <li><p>Getting associated objects that are related by two or more steps: Say a <code>Crowd</code> object as the relation <code>Crowd.hasMany(Person)</code> and <code>Person</code> has the relation <code>Person.hasMany(Pet)</code>. Is it possible to get all the pets of people in a crowd by executing something like <code>crowd.getPersons().getPets()</code>, and if so does this get sent as multiple request to the database, or just one request?</p></li>
  <li><p>"Deep" object: I want to define a person as the object:</p>
  
  <pre><code>sequelize.define('Person', {
      name: {
          first: &lt;a string&gt;,
          last: &lt;a string&gt;
      }
  });
  </code></pre>
  
  <p>Is this allowed? (Note that name is not going to be a column of the database table, but first and last will be)</p></li>
  <li><p>"Calculated" object: Is it possible to add a field to the object that is calculated from other fields of the object? For example:</p>
  
  <pre><code>sequelize.define('Person', {
      name: {
          first: &lt;a string&gt;,
          last: &lt;a string&gt;,
          full: &lt;name.first + ' ' + name.last&gt; // &lt;-- this field
      }
  });
  </code></pre>
  
  <p>So that the <code>name.full</code> field isn't actually stored in the database (which is a waste of space) but rather just calculated from the other two?</p></li>
  </ol>