Javascript 对多个表不起作用的where条件进行续集

Javascript 对多个表不起作用的where条件进行续集,javascript,mysql,node.js,express,sequelize.js,Javascript,Mysql,Node.js,Express,Sequelize.js,生成Sequelize查询时,无法从具有两个不同where条件的两个表中筛选数据。在这里我添加了一些代码 型号: //Task model module.exports = function(sequelize, DataTypes) { var Task = sequelize.define("Task", { type: DataTypes.STRING(100), start : DataTypes.DATE, finish : DataTypes.DATE,

生成Sequelize查询时,无法从具有两个不同where条件的两个表中筛选数据。在这里我添加了一些代码

型号:

//Task model
module.exports = function(sequelize, DataTypes) {
  var Task = sequelize.define("Task", {
    type: DataTypes.STRING(100),
    start : DataTypes.DATE,
    finish : DataTypes.DATE,
    status : DataTypes.STRING(1),
    }, {
    classMethods: {
      associate: function(models) {
        Task.belongsTo(models.User, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: true
          }
        });

        Task.hasOne(models.Evaluation);
        Task.hasMany(models.Clarification);
      }
    }
  });
  return Task;
};
//Evaluation model
module.exports = function(sequelize, DataTypes) {
  var Evaluation = sequelize.define("Evaluation", {
    agent_id : DataTypes.INTEGER,
    agent_name: DataTypes.STRING(100),
    status: DataTypes.STRING(100),

    }, {
    classMethods: {
      associate: function(models) {
        Evaluation.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Evaluation.hasMany(models.Clarification);
      }
    }
  });
  return Evaluation;
};
//Clarification model
module.exports = function(sequelize, DataTypes) {
  var Clarification = sequelize.define("Clarification", {
    result : DataTypes.TEXT,
    status : DataTypes.STRING(100),
    comment : DataTypes.TEXT
    }, {
    classMethods: {
      associate: function(models) {
        Clarification.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Clarification.belongsTo(models.Evaluation, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
      }
    }
  });
  return Clarification;
};
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        }
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        }
    }
]
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": [
            {
                "id": 70,
                "status": "raised"
            }
        ]
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": []
    }
]
我只是添加了不完全相同的必需代码

实际使用:

var filterobj = {
    where: {
            "UserId": { $ne: "NULL" }
        },
    include: [{
        model: models.Evaluation,
        attributes: ["id", "status","agent_name"],
        where: {
            "status": { $ne: "created" }
        },
        include: [{
            model: models.EvalForm,
            attributes: ["id", "name","LobId"],
            include: [{
                model: models.Lob,
                attributes: ["id", "ClientId"]
            },
            {
                model: models.FormDetails,
                attributes: ["version", "status"]
            }
            ]
        }, {
            model: models.Clarification,
            attributes: ["id", "status"]
        }],
        required: true
    },{
        model: models.User,
        attributes: ["name"]
    }]
};
models.Task.findAll(filterobj).then(function (tasklist) {
    // Doing some stuff for specific format
    return res.send(tasklist);
}).catch(function (err) {
    return res.send({ "error": { "code": 5000, "message": err.message } });
});
响应:

//Task model
module.exports = function(sequelize, DataTypes) {
  var Task = sequelize.define("Task", {
    type: DataTypes.STRING(100),
    start : DataTypes.DATE,
    finish : DataTypes.DATE,
    status : DataTypes.STRING(1),
    }, {
    classMethods: {
      associate: function(models) {
        Task.belongsTo(models.User, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: true
          }
        });

        Task.hasOne(models.Evaluation);
        Task.hasMany(models.Clarification);
      }
    }
  });
  return Task;
};
//Evaluation model
module.exports = function(sequelize, DataTypes) {
  var Evaluation = sequelize.define("Evaluation", {
    agent_id : DataTypes.INTEGER,
    agent_name: DataTypes.STRING(100),
    status: DataTypes.STRING(100),

    }, {
    classMethods: {
      associate: function(models) {
        Evaluation.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Evaluation.hasMany(models.Clarification);
      }
    }
  });
  return Evaluation;
};
//Clarification model
module.exports = function(sequelize, DataTypes) {
  var Clarification = sequelize.define("Clarification", {
    result : DataTypes.TEXT,
    status : DataTypes.STRING(100),
    comment : DataTypes.TEXT
    }, {
    classMethods: {
      associate: function(models) {
        Clarification.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Clarification.belongsTo(models.Evaluation, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
      }
    }
  });
  return Clarification;
};
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        }
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        }
    }
]
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": [
            {
                "id": 70,
                "status": "raised"
            }
        ]
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": []
    }
]
预期代码(不工作)

预期响应:

//Task model
module.exports = function(sequelize, DataTypes) {
  var Task = sequelize.define("Task", {
    type: DataTypes.STRING(100),
    start : DataTypes.DATE,
    finish : DataTypes.DATE,
    status : DataTypes.STRING(1),
    }, {
    classMethods: {
      associate: function(models) {
        Task.belongsTo(models.User, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: true
          }
        });

        Task.hasOne(models.Evaluation);
        Task.hasMany(models.Clarification);
      }
    }
  });
  return Task;
};
//Evaluation model
module.exports = function(sequelize, DataTypes) {
  var Evaluation = sequelize.define("Evaluation", {
    agent_id : DataTypes.INTEGER,
    agent_name: DataTypes.STRING(100),
    status: DataTypes.STRING(100),

    }, {
    classMethods: {
      associate: function(models) {
        Evaluation.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Evaluation.hasMany(models.Clarification);
      }
    }
  });
  return Evaluation;
};
//Clarification model
module.exports = function(sequelize, DataTypes) {
  var Clarification = sequelize.define("Clarification", {
    result : DataTypes.TEXT,
    status : DataTypes.STRING(100),
    comment : DataTypes.TEXT
    }, {
    classMethods: {
      associate: function(models) {
        Clarification.belongsTo(models.Task, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
        Clarification.belongsTo(models.Evaluation, {
          onDelete: "CASCADE",
          foreignKey: {
            allowNull: false
          }
        });
      }
    }
  });
  return Clarification;
};
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        }
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        }
    }
]
[
{
        "id": 760,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-13T05:41:56.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 760,
            "status": "completed",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": [
                {
                    "id": 70,
                    "status": "raised"
                },
                {
                    "id": 71,
                    "status": "esclate"
                }
            ]
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": [
            {
                "id": 70,
                "status": "raised"
            }
        ]
    },
    {
        "id": 761,
        "type": "clarification",
        "start": "2017-07-12T14:30:52.000Z",
        "finish": "2017-07-12T14:35:30.000Z",
        "status": "A",
        "UserId": 854,
        "Evaluation": {
            "id": 761,
            "status": "assigned",
            "agent_name": "TestAgent1",
            "EvalForm": {
                "id": 5000008,
                "name": "MobiPostpaid1",
                "LobId": 26,
                "Lob": {
                    "id": 26,
                    "ClientId": 1
                },
                "FormDetails": [
                    {
                        "version": 1,
                        "status": "A"
                    }
                ]
            },
            "Clarifications": []
        },
        "User": {
            "name": "pooja.s"
        },
        "Clarifications": []
    }
]
我可以在我有关联的任务评估表中包含澄清表。where条件的问题。它正在收集所有的记录。我希望从状态为已提升的澄清表中获得数据。以及从评估表状态中分配并完成。我看到一些代码使用了运算符

A.findAll({
    where: {
        $or: [
            {'$B.userId$' : 100},
            {'$C.userId$' : 100}
        ]
    },
    include: [{
        model: B,
        required: false

    }, {
        model: C,
        required: false
    }]
}); 

但这对我不起作用。

你有两个where键,其中包括评估模型,而不是发布我正在获取所有数据。你能发布你期望的查询和你想要的查询吗got@Shivam,我有三个模型,即任务模型、评估模型和澄清模型。我想包括每个任务的评估和澄清(您可以在上面的模型中理解它们之间的关系)。每个评估和澄清都有不同的状态。对于每个任务,我们都有评估,但澄清是可选的。如果我们有澄清,我们也需要澄清。因此,对于每项任务,我们肯定会得到评估,如果存在澄清,我们也需要包括澄清。我必须包括基于状态的评估和澄清,因此我尝试在条件下放置两个,但没有按照我的预期工作。目前,我只是使用javascript提取所有数据并基于状态进行过滤。上面的代码应该是一个,但不是实际使用的。从上面的代码中,我只是删除了where条件,而不包括任务内部的澄清。只需在评估中包含澄清,并使用js进行状态筛选。@Shivam,请查看有助于理解问题的更改。