【问题标题】:add an object or edit if exist (indexeddb)添加对象或编辑(如果存在)(indexeddb)
【发布时间】:2015-04-15 04:06:26
【问题描述】:

我有这段代码,如果存在,我可以添加或编辑对象,但是“for”在调用函数 onsuccess 之前完成,那么索引“for”是错误的。

如何通过索引onSuccess?

求救!!!

var active = dataBase.result;
var data = "";
var object = "";
var index = null;
var request;
$(".layers").promise().done(function () {
    var elements = document.getElementsByClassName('layers');
     for (var i = 0; typeof (elements[i]) != 'undefined'; i++) {
        if (elements[i].getAttribute("src").split("/")[4] !== "alpha.png") {
        data = active.transaction([elements[i].getAttribute("src").split("/")[3]], "readwrite");
        object = data.objectStore(elements[i].getAttribute("src").split("/")[3]);
        index = object.index("by_Name");
        request = index.get(String(elements[i].getAttribute("src").split("/")[4] + "/" + elements[i].getAttribute("src").split("/")[6]));

        request.onsuccess = function (e) {
            var result = e.target.result;
            if (result === undefined) {
                var resultPut = object.put({
                    Name: String(elements[i].getAttribute("src").split("/")[4] + "/" + elements[i].getAttribute("src").split("/")[6]),
                    Count: 1,
                    Type: String(elements[i].getAttribute("src").split("/")[4])
                });
                resultPut.onerror = function (e) {
                    alert(resultPut.error.name + '\n\n' + resultPut.error.message);
                };
            } else {
                result.Count++;
                var requestUpdate = object.put(result);
                requestUpdate.onerror = function (event) {
                    alert(requestUpdate.error.name + '\n\n' + requestUpdate.error.message);
                };
            }
        }(event);
        }
    }
    alert("Finish");
})

【问题讨论】:

    标签: javascript indexeddb


    【解决方案1】:

    问题是,当 for 结束时,与对象存储的事务还没有结束。您可以尝试像这样封装索引:

    for(var i = 0; i < elements.length; i++) {
        (function(myElement) {
            if (myElement.getAttribute("src").split("/")[4] !== "alpha.png") {
            ...
            }
        })(elements[i]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      相关资源
      最近更新 更多