按关联查找项目?

时间:2016-06-27 12:25:52

标签: node.js sequelize.js

我有两个相关的数据对象,User和userAttributes。用户拥有多个userAttributes。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以轻松使用eager loading

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

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

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

编辑:顺便说一句,您必须将userAttribute与用户相关联,如果您还没有这样做,请通过

userAttribute.belongsTo(User);