【发布时间】:2020-09-30 07:12:09
【问题描述】:
所以这一直困扰着我一段时间,我有一个对象数组,我想插入到我的 SQLite DB 中。每个对象都有 5 个参数,我有 SQL 查询来运行它。我使用循环遍历数组并通过数据库事务将每个对象填充到 SQLite。但是,数据库任务是异步的,这导致循环在任务运行之前完成,并且不正确的数据被填充到数据库中。下面代码中的while循环不起作用,我用for循环尝试了同样的事情,但无济于事。
var i=0;
while(i<rawData.length){
console.log(rawData[i],i)
db.transaction(function (tx) {
console.log(rawData,i," YAY")
tx.executeSql(
'Update all_passwords SET title=?,userID=?,password=?,notes=?,category=? WHERE ID =? ',
[rawData[i].title,rawData[i].userID,rawData[i].password,rawData[i].notes,rawData[i].category,rawData[i].id],
(tx, results) => {
console.log("saved all data")
tx.executeSql(
"SELECT * FROM all_passwords ORDER BY id desc",
[],
function (tx, res) {
i++
console.log("Print Out Correct Data")
for(var i=0;i<res.rows.length;i++){
console.log(res.rows.item(i), i )
}
});
}
);
console.log("EXIT")
}
,
(error) => {
console.log(error);
}
);
}
我不熟悉使用带有钩子的异步任务,但我相信这可能是一个潜在的解决方案。我的目的是在使用状态来维护加载屏幕的同时将对象的 rawaData 数组一次性填充到 SQLDb 中。
我确实参考了以下来源,但无法提出任何具体的建议。
react native insertion of array values using react-native-sqlite-storage
提前致谢!
【问题讨论】:
标签: javascript reactjs react-native sqlite