【发布时间】:2012-03-17 15:46:08
【问题描述】:
以下是关于 sequelize (sequelize project site) 支持的功能的一些问题,我想在决定是否使用它之前先弄清楚:
链接(效率):链接多个查询时,这些查询是收集到一个对数据库的请求中(作为一批操作),还是每个单独发送?
链接(成功/错误):链接多个查询时,何时发出成功事件以及发生错误时会发生什么?只有当 all 操作成功时才会发出“成功”?如果出现错误,是否会回滚所有操作(即是否将链式操作视为事务)
过滤关联:假设
Crowd对象具有关系Crowd.hasMany(Person)。你可以通过执行crowd.getPersons()得到所有关联的人,但是是否可以选择他们的一个子集,比如crowd.getPersons({where: { age: 30 }})?获取通过两个或多个步骤关联的关联对象:将
Crowd对象称为关系Crowd.hasMany(Person)和Person具有关系Person.hasMany(Pet)。是否可以通过执行crowd.getPersons().getPets()之类的操作来获取人群中所有人的宠物,如果可以,这会作为多个请求发送到数据库,还是仅发送一个请求?-
“深”对象:我想定义一个人为对象:
sequelize.define('Person', { name: { first: <a string>, last: <a string> } });这是允许的吗? (请注意,名称不会是数据库表的列,而是第一个和最后一个)
-
“计算”对象:是否可以在对象中添加一个字段,该字段是根据对象的其他字段计算得出的?例如:
sequelize.define('Person', { name: { first: <a string>, last: <a string>, full: <name.first + ' ' + name.last> // <-- this field } });所以
name.full字段实际上并没有存储在数据库中(这很浪费空间),而只是从其他两个中计算出来的?
【问题讨论】:
标签: database node.js sequelize.js