【问题标题】:Sequelize sort query by number of children in one-to-many relationship按一对多关系中的子项数量对排序查询进行排序
【发布时间】:2023-03-26 15:41:01
【问题描述】:

假设我有一个属于ToMany Children 的模型Parent。我想查询一些父对象,并对它们进行排序,以便具有最多孩子的父对象排在第一位。

同样,是否可以将其他条件附加到被计算的孩子身上?例如,按 3 岁或 3 岁以下的女童数量对父母进行排序。

什么是完成此任务的有效方法?

【问题讨论】:

    标签: node.js sqlite sequelize.js


    【解决方案1】:

    您可以将子计数预计算字段添加到父对象,这样您就永远不需要转到子对象,这将使 quaring 非常快,当您添加新子/删除子时,请记住增加或减少父级中的值。

    同样在第二个问题中添加 tow 字段到父male_child_count & female_child_count,生活会更轻松:-)

    【讨论】:

    • 我一直在考虑这个想法。这是一个常见的解决方案吗?您建议在哪里添加该计算?子对象上的 afterCreate 和 afterDelete 挂钩是否合适?
    • 是的,当需要速度而不是大小时,优化 rdbms 是一个常见的想法
    • 完美。这让人放心。您的答案中提到的预计算字段是什么?这与父对象上的 beforeSave 挂钩相同吗?
    • 是的,我的意思是,每次添加新孩子时,预计算都会增加孩子计数,每次从父对象的子计数字段中删除现有孩子时,都会减少孩子计数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多