Как вставить данные в базу данных sqlite с помощью универсальной функции - PullRequest
0 голосов
/ 09 апреля 2019

Функция, которую я кодирую, будет вызываться из другого файла javascript, а поля и значения будут передаваться в функцию, включая имя таблицы. Но когда я запускаю функцию, она просто выдает ошибку без этого сообщения об ошибке

    We have encounter an Error 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": "mydb.db", }, "_running": true, "_txnQueue": Queue { "first": Object { "item": TransactionTask { "errorCallback": [Function anonymous], "readOnly": false, "successCallback": [Function anonymous], "txnCallback": [Function anonymous], }, "next": Object { "item": TransactionTask { "errorCallback": [Function anonymous], "readOnly": false, "successCallback": [Function anonymous], "txnCallback": [Function anonymous], }, "next": 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": 3, }, "version": "1.0", }, }

Так что я создаю это с использованием javascript React native и использую expo SDK. Expo поставляется в модуле SQLite. Опять же, я делаю, чтобы создать функцию, которая может быть вызвана из любого места в коде, и добавить некоторые данные в базу данных.

   export const insert = (tbl, fields, values) =>{
    const query = "insert into ${tbl} (${fields}) values (${values});";
    console.log(query);
    //it looks fine to me
    db.transaction(trx => {
        let trxQuery = trx.executeSql(
           query
        ,[values],(data)=> console.log('we made it',data),(err)=>console.log('We have encounter an Error', err))
        console.log(trxQuery); // retruns undefined
    })
}

Так я и назвал функцию

    const personObj = JSON.parse(personDetails);
        Object.keys(personObj).map(i => 
            insert('users','name, address, hash', [personObj[i].name, personObj[i].address, personObj[i].hash])
        )

Я ожидаю получить консольный журнал we made it и информацию о данных, которые мы вставили. Спасибо за вашу помощь

1 Ответ

1 голос
/ 12 апреля 2019

Успех и обратный вызов ошибок имеют 2 параметра: первый - сама транзакция, второй - ошибка или набор результатов. Вы должны отредактировать свой код, как показано ниже, и проверить объект набора результатов,

`export const insert = (tbl, fields, values) =>{
    const query = "insert into ${tbl} (${fields}) values (${values});";
    console.log(query);
    //it looks fine to me
    db.transaction(trx => {
        let trxQuery = trx.executeSql(
             query
            ,[values]
            ,(transact,resultset) => console.log('we made it',resultset)
            ,(transact,err) => console.log('We have encounter an Error', err)
       );
    })
}`
...