【问题标题】:Find items by association?按关联查找项目?
【发布时间】:2016-06-27 22:58:50
【问题描述】:

我有两个关联的数据对象,用户和用户属性。用户有很多用户属性。

我希望在 userAttributes 中找到具有相关值的用户。首先我想我可以像这样搜索关联的表:

    userAttribute.findOrCreate({where: {'name': 'fbprofile', 'value': profile.id }})
        .spread((userAttribute, created) => {
             if(created){...}else{...}
        })

但我意识到我仍然需要根据关联查找用户。

有没有办法根据关联查找记录?

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    您可以轻松地使用eager loading

    userAttribute.findOrCreate({
        where: {'name': 'fbprofile', 'value': profile.id },
        include: [ User ]
    })
    .spread((userAttribute, created) => {
        if(created){
            doSomethingWith(userAttribute.user);
        }
        else{...}
    });

    请注意,您现在可以访问 userAttribute 的属性“user”。

    如果创建了 userAttribute 对象(未找到),当然也应该创建 user 对象。

    编辑:顺便说一下,如果您还没有这样做,您还必须将 userAttribute 与 user 关联起来,通过

    userAttribute.belongsTo(User);
    

    【讨论】:

    • Sequelize 从这个操作创建一个 JOIN 语句,所以这会比执行两个查询更快。
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多