【问题标题】:Sequelize.js - Find object by relation id listSequelize.js - 通过关系 id 列表查找对象
【发布时间】:2019-02-13 16:51:59
【问题描述】:

在这里续集并试图掌握这个概念的新手。我对语法和运算符感到困惑。

所以我有用户模型和组模型。当用户向群组发帖时,我可以只使用群组 ID:Group.findOne({id})。但是,我希望允许用户选择他们想要发布更新的用户,而这个选择的用户组有时已经作为一个组存在于我们的数据库中。如何找到包含组中所有用户的组?

例如:

用户 1 向用户 [2,3,4] 发帖。如果存在,我想找到一个恰好具有 [1,2,3,4] 个用户作为 GroupUser 关系的组。

我使用了如下所示的 belongsToMany 关系。

UserModel.belongsToMany(GroupModel, { through: 'GroupUser' });
GroupModel.belongsToMany(UserModel, { through: 'GroupUser' });

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    据我了解,有三张表users、groups、groupUsers。 使用以下代码

    Groups.findAll({
        include: [
            {
                required: true
                model: Db.groupUsers,
                where: {
                    userId: { $in: [1,2,3,4] }
                }
            },
        ]
    
    });
    

    如果您想在不包括用户组的情况下执行此操作,请告诉我,包括可以在组 findAll 上设置 where 条件的用户

    【讨论】:

    • 感谢您的帮助 Rohit - Db.groupUsers 未定义。是否有其他功能可以获取 groupUsers 模型?
    • 我可以使用 db.model('groupUsers') 获取 groupUsers 模型,但它说 groupUsers 与 Group 没有关联
    • 我决定添加一个“slug”字段,其中包含一个字符串中的所有用户 ID。认为这个操作可能比寻找关系便宜。如果您发现任何其他更好的方法,请告诉我。
    • 嗨@HenryH 抱歉回复晚了,Db.groupUsers Db 是用于访问创建的全局sequelize 的参数。 Db 在我的代码中,它在您的代码中似乎有所不同。要绕过这个需要上面代码所在的 groupUsers 模型
    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2019-07-06
    • 2023-03-09
    相关资源
    最近更新 更多