gpt4 book ai didi

javascript - 从数组中获取值时,SQLite DELETE 事务不起作用

转载 作者:行者123 更新时间:2023-11-28 02:03:25 25 4
gpt4 key购买 nike

这让我发疯。

我有一个消息队列,当设备处于离线状态时,我使用本地存储网络数据库来存储这些消息,当有互联网连接时,它会发送这些消息。发送消息后,我希望将它们从表中删除。

当我发送消息时,我会保留一个名为 MessageIDs 的数组,这样我就可以引用需要删除的行。

我遍历 MessageID 的长度并获取每个 ID 并进行 DELETE 事务。我的 alert() 获得了正确的值,但是当事务执行时,该值未定义。我尝试将一个已知的“ID”编码到交易中,但它成功了。有什么想法吗?

 var MessageIDs = new Array();

//In the block of code not shown I populate MessageIDs and send out messages

for(var j=0; j < MessageIDs.length; j++)
{
alert(MessageIDs[j]); //Pulls the right value
site.data.database.transaction(
function (transaction) {
//[MessageIDs[j]] has a value of undefined and thus doesn't get deleted but the transaction doesn't technically fail either
transaction.executeSql("DELETE FROM Messages WHERE id = ?;", [MessageIDs[j]],
site.contact.removeQueuedMessagesSuccess, site.contact.removeQueuedMessagesError);
}
);
}

最佳答案

抱歉,我不能把它作为评论,所以在这里作为一个答案,扩展 DCoder 的答案:你也可以把循环放在事务中,那么它也会起作用。不过,他的解决方案更简洁。

编辑:也许我应该给出为什么这个添加不是不重要的原因:显然,您不能总是以这种方式组合查询。因此,在开始嵌套事务之前,只需将查询循环放入一个事务中即可。

关于javascript - 从数组中获取值时,SQLite DELETE 事务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com