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 } }))

Объект запроса опущен, так как в приведенном выше запросе sequelize я задаю свой собственный оператор where. Если я удаляю оператор where, то объект запроса работает. Как я могу использовать свой собственный оператор where, а также включить объект запроса перьев?

Спасибо! С уважением,

эмир

0 ответов

Чтобы добавить дополнительные условия к существующему объекту запроса, вместо использования params.sqeuelize вы добавляете их непосредственно в объект запроса (поскольку он доступен через context.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")
        )
      )
   )
}

Вероятно, неправильный синтаксис, но идея в том, что добавить дополнительные условия прямо в объект запроса "перья". Надеюсь это поможет.

Другие вопросы по тегам