续集NodeJS:是否支持这些function?

以下是关于sequelize( sequelize project site )支持的特性的一些问题,我想在决定是否使用它之前先澄清一下:

  1. 链接(效率):当链接多个查询时,这些请求是否被收集到数据库中(作为一批操作),还是每个都单独发送?

  2. 链接(成功/错误):链接多个查询时,何时发出成功事件,发生什么错误? 只有所有操作都成功了,“成功”才会发射出去吗? 如果发生错误,是否会回滚所有操作(即将链操作视为事务)

  3. 过滤关联:说一个Crowd对象有关系Crowd.hasMany(Person) 。 您可以通过执行crowd.getPersons()来获取所有关联的人,但是可以select其中的一个子集,比如crowd.getPersons({where: { age: 30 }})

  4. 获取通过两个或多个步骤相关的关联对象:将Crowd对象表示为关系Crowd.hasMany(Person)Person具有Person.hasMany(Pet)关系。 是否有可能通过执行诸如crowd.getPersons().getPets()类的东西来获得人群中的所有宠物,如果是这样,这个请求会作为多个请求发送到数据库,还是只有一个请求?

  5. “深”对象:我想定义一个人作为对象:

     sequelize.define('Person', { name: { first: <a string>, last: <a string> } }); 

    这是允许的吗? (请注意,名称不会是数据库表的列,但首先和最后一个将是)

  6. “计算”对象:是否可以添加一个字段到从对象的其他字段计算的对象? 例如:

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

    因此, name.full字段实际上并不存储在数据库(这是浪费空间),而只是从另外两个计算?

1:您可以使用超级duper批处理QueryChainer。 不过,每个命令都会被分开执行。

2:使用QueryChainer,只有一切正常,才会触发成功事件。 如果发生一个或多个错误,则会触发错误。 绑定方法的第一个参数将是一个错误数组。

3 .:嗯,我不是100%确定,但恕我直言,它还没有支持。

4:不可能,但更复杂,不太花哨:

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

5:不。 但我也不明白你为什么这样做。

6 .:是的,请查看http://sequelizejs.com/docs/1.7.8/models#expansion-of-models和&#xFF1A;

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