Оператор SELECT IN Ionic Sqlite не возвращает правильных результатов - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть ионное мобильное приложение, в котором я использую плагин Sqlite.Я пытаюсь выполнить следующий запрос:

this.db.executeSql('SELECT * FROM foo_table WHERE id IN (?)', [[1, 3]])
    .then(data => {
        console.log(data.rows.item(0));
        console.log(data.rows.item(1));
        // Do something here
    });

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

Когда я запускаю оператор выше, он не возвращает те две сущности, идентификаторы которых равны 1 и 3. Вместо этого он возвращает undefined.Я запускаю точно такой же оператор в консоли sqlite, который SELECT * FROM table_a WHERE id IN (1,3);, и это работает.Он правильно показывает две сущности.Мой вопрос заключается в том, почему приведенный выше запрос Sqlite SELECT IN не работает должным образом и как я должен правильно добавить много значений в параметрах (где находится массив значений 1 и 3)?Я использую его (SELECT IN query) неправильно?

Когда я запускаю вышеупомянутый запрос с параметрами как:

  • [1] -> работает
  • [[1]]-> работает
  • [[1, 3]] -> не работает
  • [1, 3] -> ошибка, которая совершенно очевидна

1 Ответ

0 голосов
/ 21 сентября 2019

Я нашел два обходных пути для этого:

  1. Объединение значений массива в виде строк (не хорошее решение):
const ids = [1, 3];
this.db.executeSql('SELECT * FROM foo_table WHERE id IN (' + ids.toString()')', [])
    .then(data => {
        console.log(data.rows.item(0));
        console.log(data.rows.item(1));
        // Do something here
    });
Использование sql SELECT в запросе SELECT IN ( хорошее решение, если вы можете извлечь эти значения из таблицы базы данных ):
this.db.executeSql('SELECT * FROM foo_table_a WHERE id IN (SELECT id FROM foo_table_b)', [])
    .then(data => {
        console.log(data.rows.item(0));
        console.log(data.rows.item(1));
        // Do something here
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...