gpt4 book ai didi

javascript - 如何检索 ydn-db 中对象的排序列表?

转载 作者:行者123 更新时间:2023-11-28 01:56:23 38 4
gpt4 key购买 nike

按照此处文档中的示例 http://dev.yathit.com/ydn-db/getting-started.html ,“排序”下的第一个示例。

我的代码:

var schema = {
stores: [
{
name: "authors",
keyPath: "id",
indexes: [
{ keyPath: "born" }
]
}
]
};
var db = new ydn.db.Storage("library", schema);

db.put("authors", [{ id: "111", born: "zzz" }, { id: "555", born: "bbb" }, { id: "999", born: "aaa" }]).done(function() {
// query with default ordering
db.values("authors").done(function(r) {
console.log("A list of objects as expected", r);
});

// query by ordered by "born" field
db.values(new ydn.db.Cursors("authors", "born", null, false)).done(function(r) {
console.log("This is a list of ids, not objects", r);
});
});

将查询从默认排序更改为按特定列排序似乎会将其行为从返回对象列表更改为仅返回 id 列表。难道我做错了什么?如何获取对象列表?

最佳答案

应该是

// query by ordered by "born" field
db.values(new ydn.db.IndexValueCursors("authors", "born", null, false)).done(function(r) {
console.log("list of objects sorted by born", r);
});

// query by ordered by "born" field
db.values("authors", "born", null, false).done(function(r) {
console.log("list of objects sorted by born", r);
});

或者简单地

db.values("authors", "born").done(function(r) {
console.log("list of objects sorted by born", r);
});

一个好的 API 应该非常容易地完成这些常见的查询,而无需阅读文档。我会想到更好的API。现在,您必须了解迭代器的工作原理:http://dev.yathit.com/api-reference/ydn-db/iterator.html ydn.db.Cursors 的引用值是主键。因此values 返回列表主键。而ydn.db.IndexValueCursors的引用值为记录值,因此 values 返回对象列表。事实上,这就是 IndexedDB API 的工作原理。

另一点是上面两个查询具有不同的性能特征。第二种方法,直接查询比第一种方法(使用迭代器)更快。这是因为,迭代器将进行迭代,而第二种方法将使用批量查询。 websql 上的性能有很大不同,因为它不支持迭代。

关于javascript - 如何检索 ydn-db 中对象的排序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041873/

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