suite pour NodeJS: ces fonctionnalités sont-elles sockets en charge?

Voici quelques questions sur les fonctionnalités sockets en charge par sequelize ( site du projet sequelize ) que je voudrais clarifier avant de décider de l’utiliser ou non:

  1. Chaînage (efficacité): lors du chaînage de plusieurs requêtes, celles-ci sont-elles collectées en une requête à la firebase database (en tant que lot d’opérations), ou chacune est-elle envoyée séparément?

  2. Chaînage (succès / erreur): lors du chaînage de plusieurs requêtes, quand l’événement de succès est-il émis et que se passe-t-il en cas d’erreur? Le “succès” n’est-il émis que si toutes les opérations ont réussi? Et en cas d’erreur, annule-t-il toutes les opérations (les opérations chaînées sont-elles traitées comme une transaction)?

  3. Associations de filtrage: Dites qu’un object Crowd a la relation Crowd.hasMany(Person) . Vous pouvez obtenir toutes les personnes associées en exécutant crowd.getPersons() , mais est-il possible de en sélectionner un sous-ensemble, tel que crowd.getPersons({where: { age: 30 }}) ?

  4. Obtention des objects associés liés par au moins deux étapes: Dites un object Crowd comme étant la relation Crowd.hasMany(Person) et Person a la relation Person.hasMany(Pet) . Est-il possible d’obtenir tous les animaux de compagnie des personnes dans une foule en exécutant quelque chose comme crowd.getPersons().getPets() , et si c’est le cas, cela est-il envoyé en tant que demande multiple à la firebase database, ou juste une demande?

  5. Objet “profond”: je veux définir une personne comme object:

     sequelize.define('Person', { name: { first: , last:  } }); 

    Est-ce permis? (Notez que le nom ne sera pas une colonne de la table de la firebase database, mais le premier et le dernier le seront)

  6. Objet “calculé”: Est-il possible d’append à l’object un champ calculé à partir d’autres champs de l’object? Par exemple:

     sequelize.define('Person', { name: { first: , last: , full:  // <-- this field } }); 

    Pour que le champ name.full ne soit pas réellement stocké dans la firebase database (ce qui est une perte d’espace), mais plutôt simplement calculé à partir des deux autres?

1 .: Vous pouvez utiliser pour le traitement par lots super duper le QueryChainer. Néanmoins, chaque commande sera exécutée séparément.

2 .: À l’aide de QueryChainer, l’événement de réussite ne sera déclenché que si tout va bien. Une erreur est déclenchée s’il ya une ou plusieurs erreurs. Le premier paramètre de la méthode liée sera un tableau d’erreurs.

3 .: Hmm, je ne suis pas sûr à 100%, mais à mon humble avis, ce n’est pas encore supporté

4 .: Non, pas possible mais plus compliqué et moins sophistiqué avec:

 crowd.getPeople().success(function(people) { people.forEach(function(person){ person.getPets().success... // you have to collect them on your own }) }) 

5 .: Non. Mais je ne comprends pas non plus pourquoi vous feriez cela.

6 .: Oui, consultez cette http://sequelizejs.com/docs/1.7.8/models#expansion-of-models et:

 Person = sequelize.define('Person', {foo:Sequelize.STRING}, { instanceMethods: { fullname: function() { return this.firstName + ' ' + this.lastName } } })