Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 顶层sequelize v5的where子句出错_Javascript_Mysql_Node.js_Sequelize.js - Fatal编程技术网

Javascript 顶层sequelize v5的where子句出错

Javascript 顶层sequelize v5的where子句出错,javascript,mysql,node.js,sequelize.js,Javascript,Mysql,Node.js,Sequelize.js,我希望你能帮我找到解决这个问题的办法 基本上,这个查询所做的是从一个名为“jobs”的表中加载具有多个条件的元素。条件是根据相关市场、工作状态、关键字和订单进行加载 该代码段如下所示: sequelize.models.jobs.findAll( { offset: ( filters.page * filters.size ) - filters.size, limit: filters.size, w

我希望你能帮我找到解决这个问题的办法

基本上,这个查询所做的是从一个名为“jobs”的表中加载具有多个条件的元素。条件是根据相关市场、工作状态、关键字和订单进行加载

该代码段如下所示:

          sequelize.models.jobs.findAll( {
            offset: ( filters.page * filters.size ) - filters.size,
            limit: filters.size,
            where: [
              {
                status:"approved"
              }
            ],
            include: [
              {
                model: sequelize.models.users,
                attributes: [
                  'id', 'firstName', 'lastName', 'phoneNumber', 'email', 'profilePicture'
                ],
                required: false
              }
            ]
          } )
如果你注意到有一种叫做用户的关系,一切都很完美(就像我能说的魅力)。但当我尝试在查询的顶层执行一些where子句时,问题就出现了。例如,如果我将其添加到整个逻辑中断的位置:

{
 status: "approved",
 '$users.firstName$': "Put a name here"
}
Sequelize生成的查询:

 SELECT `jobs`.*, `users`.`id` AS `users.id`, `users`.`firstName` AS `users.firstName`, `users`.`lastName` AS `users.lastName`, `users`.`phoneNumber` AS `users.phoneNumber`, `users`.`email` AS `users.email`, `users`.`profilePicture` AS `users.profilePicture`, `users->jobWorkers`.`workerId` AS `users.jobWorkers.workerId`, `users->jobWorkers`.`jobId` AS `users.jobWorkers.jobId`, `users->jobWorkers`.`hours` AS `users.jobWorkers.hours`, `users->jobWorkers`.`wage` AS `users.jobWorkers.wage`, `users->jobWorkers`.`bonus` AS `users.jobWorkers.bonus`, `users->jobWorkers`.`paid` AS `users.jobWorkers.paid`, `users->jobWorkers`.`createdAt` AS `users.jobWorkers.createdAt`, `users->jobWorkers`.`updatedAt` AS `users.jobWorkers.updatedAt`, `users->jobWorkers`.`deletedAt` AS `users.jobWorkers.deletedAt` FROM (SELECT `jobs`.`id`, `jobs`.`rate`, `jobs`.`discount`, `jobs`.`drivingFee`, `jobs`.`bonus`, `jobs`.`token`, `jobs`.`type`, `jobs`.`jobDateTime`, `jobs`.`jobStartTimestamp`, `jobs`.`laborjacks`, `jobs`.`hours`, `jobs`.`adminNotes`, `jobs`.`description`, `jobs`.`contactName`, `jobs`.`contactPhone`, `jobs`.`contactEmail`, `jobs`.`multipleLocations`, `jobs`.`startAddressStreet1`, `jobs`.`startAddressStreet2`, `jobs`.`startAddressStreet3`, `jobs`.`startAddressCity`, `jobs`.`startAddressState`, `jobs`.`startAddressZip`, `jobs`.`endAddressStreet1`, `jobs`.`endAddressStreet2`, `jobs`.`endAddressStreet3`, `jobs`.`endAddressCity`, `jobs`.`endAddressState`, `jobs`.`endAddressZip`, `jobs`.`specialInstructions`, `jobs`.`hearAboutUs`, `jobs`.`status`, `jobs`.`tip`, `jobs`.`typeOther`, `jobs`.`createdAt` FROM `jobs` AS `jobs` WHERE (`jobs`.`deletedAt` IS NULL AND (((`jobs`.`description` LIKE '%Daniel%' OR `jobs`.`contactName` LIKE '%Daniel%' OR `jobs`.`contactEmail` LIKE '%Daniel%' OR `jobs`.`startAddressCity` LIKE '%Daniel%' OR `jobs`.`startAddressState` LIKE '%Daniel%' OR `jobs`.`startAddressStreet1` LIKE '%Daniel%' OR `jobs`.`startAddressStreet2` LIKE '%Daniel%' OR `jobs`.`startAddressStreet3` LIKE '%Daniel%' OR `jobs`.`startAddressZip` LIKE '%Daniel%' OR `jobs`.`endAddressState` LIKE '%Daniel%' OR `jobs`.`endAddressStreet1` LIKE '%Daniel%' OR `jobs`.`endAddressStreet2` LIKE '%Daniel%' OR `jobs`.`endAddressStreet3` LIKE '%Daniel%' OR `jobs`.`endAddressZip` LIKE '%Daniel%' OR `jobs`.`specialInstructions` LIKE '%Daniel%' OR `jobs`.`adminNotes` LIKE '%Daniel%' OR `users`.`firstName` = 'Daniel') AND `jobs`.`status` = 'active'))) LIMIT 0, 10) AS `jobs` LEFT OUTER JOIN ( `jobWorkers` AS `users->jobWorkers` INNER JOIN `users` AS `users` ON `users`.`id` = `users->jobWorkers`.`workerId`) ON `jobs`.`id` = `users->jobWorkers`.`jobId` AND (`users`.`deletedAt` IS NULL)
续集错误:

“where子句”中的未知列“users.firstName”

如果可以看到sequelize,请将users.firstName添加到jobs中,而不是左外部联接。这是与名为JobWorkers的连接表的多对多关系,配置如下:

sequelize.models.jobs.belongtomany(sequelize.models.users,{通过:sequelize.models.jobWorkers,foreignKey:'jobId'})

sequelize.models.users.belongTomany(sequelize.models.jobs,{通过:sequelize.models.jobWorkers,foreignKey:'workerId'})

我不知道该怎么办。我需要在findAll函数中设置一个选项吗?表关系是错误的?我什么都试过了,但似乎都不管用


感谢您阅读所有这篇文章,如果有什么我没有解释的或者让我感到困惑,请告诉我。

使用
左外联接
中的一个条件,其中
左外联接
中指示的表列上的
等于
内联接
。那么,您实际想要实现什么呢?在
findAll
@Emma中尝试
subQuery:false
,我已经尝试了si查询:false,但使用了相同的方法result@Anatoly我想检查作业中的用户名是否等于我发送的关键字。因此,基本上,如果这个查询的子查询有相关数据,请将父查询带给我。你知道吗?你应该在
where
中使用带有子查询的
Sequelize.literal
来检查
用户
,因为你使用了
限制
偏移