Feathers-Sequelize Where语句和查询参数

时间:2018-08-03 12:03:41

标签: sequelize.js feathersjs feathers-sequelize

我有以下针对羽毛的查询:

context.params.sequelize = {
    raw: false,
    include: [{
      model: organisations,
      where: organisationId ? { id: organisationId } : undefined,
      include: [{
        model: roles,
        where: roleId ? { id: roleId } : undefined,
      }],
    }],
    where: single ? (
      sequelize.and(
        sequelize.where(
          sequelize.col('"organisations->organisation_users"."roleId"'),
          sequelize.col('"organisations->roles"."id"'),
        ),
        sequelize.where(
          sequelize.col('"organisations->organisation_users"."userId"'),
          sequelize.col("users.id")
        )
      )
    ) : undefined
  }

我提出以下服务请求:

await UserService.find({ query: { email: data.email } }))

查询对象被遗漏了,因为在上面的序列查询中,我正在设置自己的where语句。如果我删除where语句,则查询对象将起作用。我该如何利用自己的where语句,并且还包括feathers查询对象?

谢谢!

埃米尔

1 个答案:

答案 0 :(得分:0)

为了向现有查询对象添加额外条件,而不是使用 params.sqeuelize ,您直接将它们添加到查询对象中(因为通过上下文可用) .params.query),并且由于使用了before钩子,因此查询对象在执行前会被修改。 在您的示例中,应类似于:

if(single) {
    context.params.query.push(
      sequelize.and(
        sequelize.where(
          sequelize.col('"organisations->organisation_users"."roleId"'),
          sequelize.col('"organisations->roles"."id"'),
        ),
        sequelize.where(
          sequelize.col('"organisations->organisation_users"."userId"'),
          sequelize.col("users.id")
        )
      )
   )
}

可能不是正确的语法,但这就是想法:直接在羽毛查询对象中添加额外条件。希望这会有所帮助。