如何使用YDN-DB获取keypath之后的下一个元素

时间:2014-08-28 13:56:16

标签: javascript indexeddb ydn-db

我正在尝试构建一个函数,该函数在传递keypath后检索存储中的下一个元素。我的getItem看起来像那样。

req = smartpigsdb.get(store, keypath);
req.done(function(record) { 
    if(record!==undefined || typeof record=='object'){
    // do something with the record
}
else console.log('error getItem: ' + e);
});
req.fail(function(e) {
    console.log(e);
});

如何使用YDN-DB实现这一目标?

2 个答案:

答案 0 :(得分:1)

如果您不知道密钥,则无法使用get。您必须使用values来迭代记录。限制为1,这样您只能得到一个结果。你可以使用知识密钥的lowerBound keyRange,这样你就可以在密钥之后得到下一个对象。

答案 1 :(得分:0)

最后我做了类似的事情,它有效,但我不确定是最好的方法。 ' IDX'是商店对象库的索引。

var range = new ydn.db.KeyRange.lowerBound(index+1);
var iter = new ydn.db.Iterator(store, 'idx', range); // 'idx' is an index for store object store
db.values(iter, 1).done(function(item) {
    if(item.length > 0){
        var req = db.get(store, item[0]);
        req.done(function(record) {
            if(record!==undefined || typeof record=='object'){
                // do soemthing with the record 
            }
            else {
                console.log('record could not be found');
            }
        });
        req.fail(function(e) {
            console.log(e);
        });
    }
});

如果我想检索以前的记录,我尝试使用range = new ydn.db.KeyRange.upperBound(index);做同样的事情,但我总是从商店获得第一条记录,所以我改为使用range = new ydn.db.KeyRange.lowerBound(index-1);

请给我一些反馈。再次感谢图书馆。 此致,弗罗林。