Как отобразить понятную ошибку из sqlite expo? - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю приложение на React-native и использую expo-SQLite для базы данных. К сожалению, у меня есть проблема в моем запросе базы данных, и я не понимаю ошибку, отправленную из sqlite.

Не могли бы вы мне помочь?

Это мой код:

db.transaction(tx => {
        tx.executeSql(
            `create table if not exists Espace (id_espace integer primary key autoincrement,name text not null unique)`, [], (tx, results) => {
                console.log("Create table Espace");
            }
        );
});
db.transaction(tx => {
        tx.executeSql(
            `INSERT INTO Indicator (title, display_order, type, hidden, graphic_type, id_espace) VALUES ('?','?','?','?','?','?')`, [title,display_order,type, hidden, graphic_type, espace], (_, {rows}) =>{
                  console.log('Put Indicator: ' + title + type + display_order + hidden + graphic_type + espace);
            },
            (error)=>{
                console.log(error);
                return true;
            }
        );
    });

Когда я пытаюсь создать индикатор, моя консоль отображает эту ошибку из sqlite:

WebSQLTransaction {
  "_complete": false,
  "_error": null,
  "_running": true,
  "_runningTimeout": false,
  "_sqlQueue": Queue {
    "first": undefined,
    "last": undefined,
    "length": 0,
  },
  "_websqlDatabase": WebSQLDatabase {
    "_currentTask": TransactionTask {
      "errorCallback": [Function anonymous],  
      "readOnly": false,
      "successCallback": [Function anonymous],
      "txnCallback": [Function anonymous],    
    },
    "_db": SQLiteDatabase {
      "_closed": false,
      "_name": "diplea.db",
    },
    "_running": true,
    "_txnQueue": Queue {
      "first": Object {
        "item": TransactionTask {
          "errorCallback": [Function anonymous],
          "readOnly": false,
          "successCallback": [Function anonymous],
          "txnCallback": [Function anonymous],
        },
      },
      "last": Object {
        "item": TransactionTask {
          "errorCallback": [Function anonymous],
          "readOnly": false,
          "successCallback": [Function anonymous],
          "txnCallback": [Function anonymous],
        },
      },
      "length": 1,
    },
    "exec": [Function anonymous],
    "version": "1.0",
  }

Это ничего не значит для меня ... Не могли бы вы сказать мне, как это понять? А может, что не так в моем коде ...

Заранее спасибо!

1 Ответ

1 голос
/ 23 апреля 2020

То, что вы видите, это сама Транзакция, а не ошибка.

Согласно документам SQLite Expo , обратный вызов ошибки Transaction.executeSql принимает два аргумента:

error (function) - Вызывается, если при выполнении этого конкретного запроса в транзакции произошла ошибка. Принимает два параметра: сама транзакция и объект ошибки.

Вы хотите, чтобы обратный вызов ошибки выглядел следующим образом:

tx.executeSql(
    ...,
    ...,
    ...,
    (_, error) => {
        console.log(error);
        return true;
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...