Where子句在三级嵌套包含

时间:2017-08-09 13:58:45

标签: node.js nested sequelize.js

我有四个modelDBList: AlarmsDB,MonitorSpotDB,MonitorGroupDB,UserDB

这些modelDB引用为列表:

AlarmDB.belongsTo(MonitorSpotDB);
MonitorSpotDB.belongsTo(MonitorGroupDB);
MonitorGroupDB.hasMany(MonitorSpotDB);
UserDB.belongsToMany(MonitorGroupDB, { through: MonitorGroupUserDB});
MonitorGroupDB.belongsToMany(UserDB, { through: MonitorGroupUserDB,});

现在我想获得相关用户的警报,所以我使用sequelize写代码,如:

  public async getAlarms(limit: number, offset: number, whereQuery: any, whereUser: any): Promise<{ count: number, rows: Alarm[] }> {
    let alarms = await AlarmDB.findAndCount({
        limit: limit,
        offset: offset,
        order: [
            ["createdAt", "desc"],
        ],
        where: whereQuery,
        include: [
            {
                model: MonitorSpotDB, as: "monitorSpot", attributes: ["id", "name", "monitorGroupId"], required: true,
                include: [{
                    model: MonitorGroupDB, as: "monitorGroup", attributes: ["id", "name"], required: true,
                    include: [{ model: UserDB, as: "users", attributes: ["id", "name"], where: whereUser }],
                }],
            },
        ],
    });
    return alarms;
}

但我得到空数组,如果我删除

include: [{ model: UserDB, as: "users", attributes: ["id", "name"], where: whereUser }],

我可以获取数据,我不知道导致此问题的原因,这是运行错误enter image description here

enter image description here

0 个答案:

没有答案