Книжная полка. js - Вложенные отношения при запросе с помощью andWhere () - PullRequest
0 голосов
/ 04 августа 2020

Я использую структуру strapi на основе node.js, и при создании построителя запросов я сталкиваюсь с проблемой с предложением andWhere ().

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

В приведенном ниже коде вы Я вижу, что я запрашиваю две вещи:

  1. Поиск модели продукта везде, где текст присутствует в поле имени.
  2. И всегда проверяйте и ищите модель продукта везде, где находится поле компании содержит значение, хранящееся в переменной usercompany - предположим, что это « Apple ».

Хорошо, так что в основном у меня несколько ролей пользователя, и я хочу добавить к этому еще одно условие . Я пытаюсь использовать метод точки (.) Для доступа к вложенным отношениям в запросе, но это, похоже, не работает: qb.andWhere('createdby.role', role) где роль будет значением текущего зарегистрированного пользователя, числовое поле, где каждый идентификатор роли сопоставлен с некоторым строковым значением, таким как «Admin» или чем-то уже в базе данных. Однако это приводит к ошибке, которая не позволяет мне запрашивать вложенные отношения. У меня нет большого опыта работы с книжными полками, поэтому IDK, как решить эту проблему.

Код :

var test = await strapi
      .query("product")
      .model.query((qb) => {
        qb.where(function () {
          this.where("name", "LIKE", "%" + searchterm + "%");
        });
        qb.andWhere("company", usercompany);
        qb.andWhere("createdby.role", role); // Here, role = 8
      })
      .orderBy("updated_at", "desc")
      .fetchAll();

Ошибка :

error Error: Undefined binding(s) detected when compiling SELECT. Undefined column(s): [createdby] query: select `product`.* from `product` where (`name` 
like ?) and `company` = ? and `createdby` = ? order by `product`.`updated_at` desc

Надеюсь на ответ как можно скорее, спасибо!

...