Что вызывает синтаксическую ошибку в»$1″ или около нее в knexjs PostgreSQL

#node.js #postgresql #graphql #knex.js

Вопрос:

В моем API узла с использованием GraphQL я добавил функции Knex для выполнения функций БД, таких как вставка, обновление, фильтрация и т. Д.

Во время создания моего фильтра, который приведен ниже, когда я нажимаю на любой из вариантов фильтров, имя детали я всегда получал синтаксическую ошибку

 "message": "select "member"."id" as "id", "member"."conversation_id" as "conversationId", "member"."name" as "name", "member"."muted" as "muted", "member"."conversation_member_type" as "memberType", "member"."member_id" as "memberId", "member"."created_at" as "createdAt", "member"."updated_at" as "updatedAt", "member"."deleted_at" as "deletedAt" from "member" where "conversation_member_type" in $1 order by "created_at" DESC - syntax error at or near "$1"",
 

Мой фильтр

 filter({
    filter = {},
    pagination = {},
    sort = { orderBy: 'createdAt', direction: 'DESC' },
  }) {
    const builder = this.tx(tableName);
    if (!isEmpty(filter)) {
      console.log(filter);
      const { conversationId, name, memberId, memberType } = filter;
      if (conversationId)
        builder.whereIn(columns.conversationId, conversationId);
      if (name) builder.where(columns.name, name);
      if (memberId) builder.whereIn(columns.memberId, memberId);
      if (memberType) {
        builder.whereIn(columns.memberType, memberType);
      }
    }

    if (!isEmpty(pagination)) {
      const { limit, skip } = pagination;
      if (limit > 0) builder.limit(limit);
      if (skip > 0) builder.offset(skip);
    }
    if (!isEmpty(sort)) {
      const { orderBy, direction } = sort;
      if (orderBy) builder.orderBy(columns[orderBy], direction);
    }

    return builder;
  }
 

Этот фильтр принимает параметр фильтр из запроса в GraphQL как

 query memebrs {
  listMembers(filter: { memberType: CONSENTEE_RECIPIENT }) {
        nodes {
      id
    }
  }
}
 

Результатом должен быть список членов, имеющих этот тип члена, но вместо этого у меня синтаксическая ошибка.

Запрос работает только тогда, когда я использую имя вместо других параметров. Я не знаю, почему в других случаях я получаю эту синтаксическую ошибку. У меня больше нет идей, почему это не работает.

В качестве дополнительной информации мой интерфейс для столбцов базы данных выглядит следующим образом

 export const columns = {
  id: 'id',
  conversationId: 'conversation_id',
  name: 'name',
  muted: 'muted',
  memberType: 'conversation_member_type',
  memberId: 'member_id',
  createdAt: 'created_at',
  updatedAt: 'updated_at',
  deletedAt: 'deleted_at',
};
 

И моя таблица выглядит так, как на скриншоте
Элемент Таблицы