Функция, которую я кодирую, будет вызываться из другого файла 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, и использую SDK expo. Выставка поставляется в модуле SQLite. Опять же, что я делаю, так это создаю функцию, которую можно вызывать из любого места в коде, и передавать некоторые данные в базу данных.
export const insert = (tbl, fields, values) =>{
const query = "insert into ${tbl} (${fields}) values (${values});";
console.info(query);
//it looks fine to me
db.transaction(trx => {
let trxQuery = trx.executeSql(
query
,[values],(data)=> console.info('we made it',data),(err)=>console.info('We have encounter an Error', err))
console.info(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
и информацию о данных, которые мы вставили. Спасибо за твою помощь
Обратный вызов успеха и ошибки имеет 2 параметра: первый - сама транзакция, второй - ошибка или набор результатов. Вы должны отредактировать свой код, как показано ниже, и проверить объект набора результатов,
`export const insert = (tbl, fields, values) =>{
const query = "insert into ${tbl} (${fields}) values (${values});";
console.info(query);
//it looks fine to me
db.transaction(trx => {
let trxQuery = trx.executeSql(
query
,[values]
,(transact,resultset) => console.info('we made it',resultset)
,(transact,err) => console.info('We have encounter an Error', err)
);
})
}`