gpt4 book ai didi

database - 为 NodeJS : are these features supported? Sequelize

转载 作者:搜寻专家 更新时间:2023-10-31 22:41:23 27 4
gpt4 key购买 nike

以下是关于 sequelize ( sequelize project site ) 支持的功能的一些问题,我想在决定是否使用它之前解决这些问题:

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

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

  3. 过滤关联:假设一个Crowd 对象具有关系Crowd.hasMany(Person)。您可以通过执行 crowd.getPersons() 获取所有关联的人,但是是否可以选择其中的一个子集,例如 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>
    }
    });

    这是允许的吗? (注意 name 不会成为数据库表的列,但 first 和 last 会)

  6. “计算”对象:是否可以向对象添加一个字段,该字段由对象的其他字段计算得出?例如:

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

    所以 name.full 字段实际上并没有存储在数据库中(这是对空间的浪费),而是只是根据其他两个字段计算出来的?

最佳答案

1.: 您可以使用 QueryChainer 进行 super 批处理。然而,每个命令将被分开执行。

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

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和:

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

关于database - 为 NodeJS : are these features supported? Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9477404/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com