Sequelize:查找没有关联的条目

弗莱堡

鉴于以下简单模型:

class A extends Model {}
A.init({
    aField: DataTypes.STRING,
}, { sequelize });

class B extends Model {}
B.init({
    bField: DataTypes.STRING,
}, { sequelize });

A.hasMany(B); // this creates the B.AId column


// populate

await A.create({
    aField: 'fooA',
    Bs: [{ bField: 'fooB' }]
}, { include: [B] });

await A.create({ aField: 'barA' });
await A.create({ aField: 'bazA' });

我不知道如何选择第一个没有 B 条目的 A 模型实例。
前一种情况,只返回barAbazA

以下不起作用,它返回foo

await A.findOne({
    include: [{
        model: B,
        required: false,
        where: {
            'AId': null,
        }
    }],
});

生成的查询是: SELECT A.*, Bs.id AS Bs.id, Bs.bField AS Bs.bField, Bs.AId AS Bs.AId FROM (SELECT A.id, A.aField FROM As AS A LIMIT 1) AS A LEFT OUTER JOIN Bs AS Bs ON A.id = Bs.AId AND Bs.AId IS NULL

艾玛

这是限制和关联的问题。类似问题:https : //github.com/sequelize/sequelize/issues/7585

Sequelize 将关联转换为子查询,但在您的用例中,您需要一个关联然后限制整体关联结果。为此,您可以使用subQuery: false禁用子查询。

await A.findOne({
    include: [{
        model: B,
        required: false,
        where: {
            'AId': null,
        }
    }],
    subQuery: false
});

这仍然不能达到你想要什么,因为whereinclude将生成AND的条件ON

生成的查询:

SELECT `A`.`id`, `A`.`aField`, `A`.`createdAt`, `A`.`updatedAt`, `Bs`.`id` AS `Bs.id`, 
    `Bs`.`bField` AS `Bs.bField`, `Bs`.`createdAt` AS `Bs.createdAt`, 
    `Bs`.`updatedAt` AS `Bs.updatedAt`, `Bs`.`AId` AS `Bs.AId` 
FROM `As` AS `A` 
LEFT OUTER JOIN `Bs` AS `Bs` ON `A`.`id` = `Bs`.`AId` AND `Bs`.`AId` IS NULL 
LIMIT 1;

你想要的是

...
... ON `A`.`id` = `Bs`.`AId` WHERE `Bs`.`AId` IS NULL 
LIMIT 1;

为了得到这个WHERE,你可以把where子句 for A.

await A.findOne({
    include: [{
        model: B,
        required: false
    }],
    where: {
        '$Bs.AId$': null
    },
    subQuery: false
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

目标组没有关联的负载均衡器

来自分类Dev

用Sequelize计算关联条目

来自分类Dev

想要在Rails中查找没有关联记录的记录

来自分类Dev

在Sequelize中创建具有关联的实例

来自分类Dev

查找具有特定值的所有关联的记录

来自分类Dev

如何通过sequelize queryInterface插入具有关联的行

来自分类Dev

排除联接表中没有关联行的行

来自分类Dev

查找没有特定事件关联的元素

来自分类Dev

静态类成员与this指针没有关联吗?

来自分类Dev

模型“ CartItem”与模型“产品”没有关联,但是吗?

来自分类Dev

Rails,ActiveRecord,has_many:through:查找没有关联的所有记录

来自分类Dev

没有关联PID的开放端口

来自分类Dev

即使没有关联,也按共同数量排序

来自分类Dev

ActiveRecord从没有关联的关联中查找记录

来自分类Dev

没有延迟加载的具有关联的postLoad实体?

来自分类Dev

Cakephp-查找没有关联记录的记录

来自分类Dev

Sequelize.js-具有关联的持久模型

来自分类Dev

Cypher:查找具有关联父节点的节点的关系

来自分类Dev

通过联接查找有关联接的关系记录

来自分类Dev

Sequelize:根据关联属于多个记录查找记录-但仍返回所有关联记录吗?

来自分类Dev

在SQLAlchemy类中查找所有关联代理

来自分类Dev

如何查找与给定条件没有关联的记录?(ActiveRecord / PostgreSQL)

来自分类Dev

如何比较没有关联值的关联枚举

来自分类Dev

在 elixir 中复制具有关联的条目

来自分类Dev

用于查询具有关联的关联的单个 Sequelize 查询

来自分类Dev

每个条目带有关联天气的 Django 模型

来自分类Dev

Ssh - 查找没有关联图片的文件

来自分类Dev

为什么 Sequelize 时间戳没有关闭

来自分类Dev

Powershell - 查找没有关联标签的实例

Related 相关文章

  1. 1

    目标组没有关联的负载均衡器

  2. 2

    用Sequelize计算关联条目

  3. 3

    想要在Rails中查找没有关联记录的记录

  4. 4

    在Sequelize中创建具有关联的实例

  5. 5

    查找具有特定值的所有关联的记录

  6. 6

    如何通过sequelize queryInterface插入具有关联的行

  7. 7

    排除联接表中没有关联行的行

  8. 8

    查找没有特定事件关联的元素

  9. 9

    静态类成员与this指针没有关联吗?

  10. 10

    模型“ CartItem”与模型“产品”没有关联,但是吗?

  11. 11

    Rails,ActiveRecord,has_many:through:查找没有关联的所有记录

  12. 12

    没有关联PID的开放端口

  13. 13

    即使没有关联,也按共同数量排序

  14. 14

    ActiveRecord从没有关联的关联中查找记录

  15. 15

    没有延迟加载的具有关联的postLoad实体?

  16. 16

    Cakephp-查找没有关联记录的记录

  17. 17

    Sequelize.js-具有关联的持久模型

  18. 18

    Cypher:查找具有关联父节点的节点的关系

  19. 19

    通过联接查找有关联接的关系记录

  20. 20

    Sequelize:根据关联属于多个记录查找记录-但仍返回所有关联记录吗?

  21. 21

    在SQLAlchemy类中查找所有关联代理

  22. 22

    如何查找与给定条件没有关联的记录?(ActiveRecord / PostgreSQL)

  23. 23

    如何比较没有关联值的关联枚举

  24. 24

    在 elixir 中复制具有关联的条目

  25. 25

    用于查询具有关联的关联的单个 Sequelize 查询

  26. 26

    每个条目带有关联天气的 Django 模型

  27. 27

    Ssh - 查找没有关联图片的文件

  28. 28

    为什么 Sequelize 时间戳没有关闭

  29. 29

    Powershell - 查找没有关联标签的实例

热门标签

归档