From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/idbcursor/direction/index.html | 150 ++++++++++++++++ files/zh-cn/web/api/idbcursor/index.html | 161 +++++++++++++++++ files/zh-cn/web/api/idbcursor/key/index.html | 194 +++++++++++++++++++++ 3 files changed, 505 insertions(+) create mode 100644 files/zh-cn/web/api/idbcursor/direction/index.html create mode 100644 files/zh-cn/web/api/idbcursor/index.html create mode 100644 files/zh-cn/web/api/idbcursor/key/index.html (limited to 'files/zh-cn/web/api/idbcursor') diff --git a/files/zh-cn/web/api/idbcursor/direction/index.html b/files/zh-cn/web/api/idbcursor/direction/index.html new file mode 100644 index 0000000000..0c7f2b6204 --- /dev/null +++ b/files/zh-cn/web/api/idbcursor/direction/index.html @@ -0,0 +1,150 @@ +--- +title: IDBCursor.direction +slug: Web/API/IDBCursor/direction +translation_of: Web/API/IDBCursor/direction +--- +

{{ APIRef("IDBCursor") }}

+
+

 {{domxref("IDBCursor")}} 的方向属性是一个 {{domxref("DOMString")}} ,表示游标遍历的方向, (比如可以通过 {{domxref("IDBObjectStore.openCursor")}} 设置). 查看下文中 {{anch("Values")}} 章节获取可取值.

+
+

语法

+
cursor.direction;
+

取值

+

用一个字符串(defined by the IDBCursorDirection enum) 表示游标的遍历方向。相关取值如下表所示:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
next从数据源开始位置遍历
nextunique +

 

+

从数据源开始遍历;当取值有重复时,只获取一次。

+
prev +

从数据源的最后位置位置开取值

+
prevunique从数据源的最后位置开始取值,只获取一次。
+  
+

例子

+

在这个简单的例子中,我们首先创建一个事物对象,返回一个对象仓库(store), 然后使用邮编遍历整个数据仓库。在每次迭代中我们记录了游标的方向,例如prev(倒序遍历)

+
prev
+
+  
+
+

注意:我们不能改变游标的取值,因为这是个只读属性;应该在{{domxref("IDBObjectStore.openCursor")}}方法调用的第二个参数指定游标遍历的方向;

+
+

使用游标遍历数据时,可以不需要我们指定在特定字段选择数据;我们可以直接获取所有数据,同时在每次循环迭代过程当中,我们可以通过cursor.value.foo获取数据,如下是一个完整的游标遍历数据的例子; IDBCursor example (view example live.)

+
function backwards() {
+  list.innerHTML = '';
+  var transaction = db.transaction(['rushAlbumList'], 'readonly');
+  var objectStore = transaction.objectStore('rushAlbumList');
+
+  objectStore.openCursor(null,'prev').onsuccess = function(event) {
+    var cursor = event.target.result;
+      if(cursor) {
+        var listItem = document.createElement('li');
+        listItem.innerHTML = '<strong>' + cursor.value.albumTitle + '</strong>, ' + cursor.value.year;
+        list.appendChild(listItem);
+
+        console.log(cursor.direction);
+        cursor.continue();
+      } else {
+        console.log('Entries displayed backwards.');
+      }
+  };
+};
+

Specifications

+ + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('IndexedDB', '#widl-IDBCursor-direction', 'direction')}}{{Spec2('IndexedDB')}} 
+

浏览器兼容性

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support23{{property_prefix("webkit")}}
+ 24
10 {{property_prefix("moz")}}
+ {{CompatGeckoDesktop("16.0")}}
10, partial157.1
+
+
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE PhoneOpera MobileSafari Mobile
Basic support4.4{{CompatGeckoMobile("22.0")}}1.0.11022{{CompatNo}}
+
+

 

+

参考资料

+ diff --git a/files/zh-cn/web/api/idbcursor/index.html b/files/zh-cn/web/api/idbcursor/index.html new file mode 100644 index 0000000000..bb8b1ef16f --- /dev/null +++ b/files/zh-cn/web/api/idbcursor/index.html @@ -0,0 +1,161 @@ +--- +title: IDBCursor +slug: Web/API/IDBCursor +translation_of: Web/API/IDBCursor +--- +

{{APIRef("IndexedDB")}}

+ +

IndexedDB API 中的 IDBCursor 接口表示一个游标,用于遍历或迭代数据库中的多条记录。

+ +

游标有一个源,指示需要遍历哪一个索引或者对象存储区。它在所属区间范围内有一个位置,根据记录健(存储字段)的顺序递增或递减方向移动。游标使应用程序能够异步处理在游标范围内的所有记录。

+ +

你可以在同一时间拥有无数个游标。你总会获得表示给定游标的同样的 IDBCursor 对象。在基础索引或对象存储上执行操作。

+ +

方法

+ +
+
{{domxref("IDBCursor.advance")}}
+
设置光标向前移动位置的次数。
+
{{domxref("IDBCursor.continue")}}
+
将游标按它的方向移动到下一个位置,到其健与可选健参数匹配的项。
+
+ +
+
{{domxref("IDBCursor.delete")}}
+
返回一个 {{domxref("IDBRequest")}} 对象,并且在一个单独的线程中,删除游标位置记录,而不改变游标的位置。这个可以用作删除一些特定的记录。
+
{{domxref("IDBCursor.update")}}
+
返回一个 {{domxref("IDBRequest")}} 对象,并且在一个单独的线程中,更新对象存储中当前游标位置的值。这个可以用来更新特定的记录。
+
+ +

属性

+ +
+
{{domxref("IDBCursor.source")}} {{readonlyInline}}
+
返回一个游标正在迭代的 {{domxref("IDBObjectStore")}}  或者 {{domxref("IDBIndex")}} 。这个方法永远不会返回一个空或者抛出异常,即使游标当前正在被迭代,已迭代超过其结束,再或者其事务没有处于活动状态。
+
{{domxref("IDBCursor.direction")}} {{readonlyInline}}
+
返回光标遍历方向。请查看 常数 中可能的值。
+
{{domxref("IDBCursor.key")}} {{readonlyInline}}
+
返回记录中游标位置的有效主键。如果游标在区间之外,将会设置成 undefined。游标主键可以是任意的时间类型(data type)。
+
{{domxref("IDBCursor.primaryKey")}} {{readonlyInline}}
+
返回游标当前有效的主键。如果游标当前正在被迭代或者已经在迭代在区间范围外,将会被设置成 undefined 。 游标主键可以是任意的时间类型(data type)。
+
+ +

常量

+ +
{{ obsolete_header(25) }}
+ +
+

这些常量不再被支持。你应该使用字符串常量。({{ bug(891944) }})

+
+ + + +

示例

+ +

在这个简单的代码片段中,我们创建了一个事务和检索一个对象存储,之后使用一个游标遍历存储对象中所有的记录。游标不是必须使用主键来选则数据库,我们可以把它全部拿出来。同时需要注意在每次循环遍历中,你可以在当前记录下的游标对象中使用  cursor.value.foo 抓取数据。对于完整的工作示例,请查看我们的 IDBCursor example (在线查看示例)。

+ +
function displayData() {
+  var transaction = db.transaction(['rushAlbumList'], "readonly");
+  var objectStore = transaction.objectStore('rushAlbumList');
+
+  objectStore.openCursor().onsuccess = function(event) {
+    var cursor = event.target.result;
+    if(cursor) {
+      var listItem = document.createElement('li');
+      listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
+      list.appendChild(listItem);
+
+      cursor.continue();
+    } else {
+      console.log('Entries all displayed.');
+    }
+  };
+};
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('IndexedDB', '#idl-def-IDBCursor', 'cursor')}}{{Spec2('IndexedDB')}}
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support23{{property_prefix("webkit")}}
+ 24
10 {{property_prefix("moz")}}
+ {{CompatGeckoDesktop("16.0")}}
10, partial157.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE PhoneOpera MobileSafari Mobile
Basic support4.4{{CompatGeckoMobile("22.0")}}1.0.11022{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/zh-cn/web/api/idbcursor/key/index.html b/files/zh-cn/web/api/idbcursor/key/index.html new file mode 100644 index 0000000000..573890a7fa --- /dev/null +++ b/files/zh-cn/web/api/idbcursor/key/index.html @@ -0,0 +1,194 @@ +--- +title: IDBCursor.key +slug: Web/API/IDBCursor/key +translation_of: Web/API/IDBCursor/key +--- +

{{APIRef("IndexedDB")}}

+ +
+

key是只读属性,返回在游标中的位置。如果游标在范围之外,这个值会被置为undefined。游标的key可以是任何数据类型。

+ +

{{AvailableInWorkers}}

+
+ +

语法

+ +
var key = cursor.key;
+ +

+ +

任意类型

+ +

示例

+ +

在该示例中,我们创建一个事务,检索一个存储对象,然后使用游标遍历所有存储在object store 中的记录。遍历的过程中,我们把类似(相簿标题,这是我们的键key),游标的key打印出来。

+ +

我们可以不根据游标的key来选取数据;我们可以抓取所有。还要注意,在循环的每个迭代中,您可以使用cursor.value.foo从当前记录下获取数据。完整示例,请看IDBCursor example (view example live.)

+ +
function displayData() {
+  var transaction = db.transaction(['rushAlbumList'], "readonly");
+  var objectStore = transaction.objectStore('rushAlbumList');
+
+  objectStore.openCursor().onsuccess = function(event) {
+    var cursor = event.target.result;
+    if(cursor) {
+      var listItem = document.createElement('li');
+      listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
+      list.appendChild(listItem);
+
+      console.log(cursor.key);
+      cursor.continue();
+    } else {
+      console.log('Entries all displayed.');
+    }
+  };
+};
+ +

规范

+ + + + + + + + + + + + + + + + + + + +
规范状态说明
{{SpecName('IndexedDB', '#widl-IDBCursor-key', 'key')}}{{Spec2('IndexedDB')}} 
{{SpecName("IndexedDB 2", "#dom-idbcursor-key", "key")}}{{Spec2("IndexedDB 2")}} 
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support23{{property_prefix("webkit")}}
+ 24
{{CompatVersionUnknown}}10 {{property_prefix("moz")}}
+ {{CompatGeckoDesktop("16.0")}}
10, partial157.1
Available in workers{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("37.0")}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}
Binary keys{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop("51.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Indexed Database 2.0{{CompatChrome(58)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOpera(45)}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("22.0")}}10228
Available in workers{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("37.0")}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}
Binary keys{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("51.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Indexed Database 2.0{{CompatChrome(58)}}{{CompatChrome(58)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOperaMobile(45)}}{{CompatUnknown}}
+
+ +

相关链接

+ + -- cgit v1.2.3-54-g00ecf