我有以下针对羽毛的查询:
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查询对象?
谢谢!
埃米尔
答案 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")
)
)
)
}
可能不是正确的语法,但这就是想法:直接在羽毛查询对象中添加额外条件。希望这会有所帮助。