![Page 1: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/1.jpg)
EWD 3トレーニング・コース #23
Global ストレージの JavaScript 用の抽
象化 (d) ノードの範囲を渡り歩くM/Gateway Developments Ltd.
Rob Tweed訳 : 日本ダイナシステム株式会社 嶋 芳成
GT.M 版編集 : 澤田 潔
※ 本稿オリジナルは Cache’ 向けとして編纂
![Page 2: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/2.jpg)
2
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
2016/9/18 EWD 3 トレーニング・コース #23
![Page 3: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/3.jpg)
3
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
• Br で始まる名前のみを得ます• Briggs• Bryant
• そしてその名前の各インスタンスのデータ・レコードを取得する
2016/9/18 EWD 3 トレーニング・コース #23
![Page 4: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/4.jpg)
4
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
forEachChild({prefix: 'Br'}, function{...});
• ここでも制御オブジェクト引数を用います• ここでは前方一致でループを
制限します
2016/9/18 EWD 3 トレーニング・コース #23
![Page 5: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/5.jpg)
5
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode){ // Br ではじまる名前の、その下位節に制限してループする});
2016/9/18 EWD 3 トレーニング・コース #23
![Page 6: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/6.jpg)
6
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode){ childNode.forEachChild(function(id){ // Br ではじまる名前の、各 id を取得する });});
2016/9/18 EWD 3 トレーニング・コース #23
![Page 7: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/7.jpg)
7
特定の節 ( ノード ) について繰り返しを制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode){ childNode.forEachChild(function(id){ console.log(id); });});
2016/9/18 EWD 3 トレーニング・コース #23
210 386 23 5321
![Page 8: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/8.jpg)
8
Customer ドキュメントに対する索引
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
customer(id, プロパティ ) = 値
2016/9/18 EWD 3 トレーニング・コース #23
![Page 9: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/9.jpg)
9
Customer ドキュメントに対する索引
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
customer(id, プロパティ ) = 値
2016/9/18 EWD 3 トレーニング・コース #23
![Page 10: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/10.jpg)
10
Customer ドキュメントに対する索引
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
customer(id, プロパティ ) = 値
customer = { '386': { firstName: 'John', lastName: 'Briggs', address: '123 Acacia Drive', // ... など }, // ... など}
2016/9/18 EWD 3 トレーニング・コース #23
![Page 11: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/11.jpg)
11
Customer ドキュメントに対する索引
customer(id, プロパティ ) = 値
customer = { '386': { firstName: 'John', lastName: 'Briggs', address: '123 Acacia Drive', // ... など }, // ... など}
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
![Page 12: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/12.jpg)
12
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
customer というドキュメントを Global ストレージの中で表現すると上記のようになります
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
![Page 13: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/13.jpg)
13
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 14: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/14.jpg)
14
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 15: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/15.jpg)
15
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 16: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/16.jpg)
16
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 17: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/17.jpg)
17
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 18: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/18.jpg)
18
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 19: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/19.jpg)
19
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 20: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/20.jpg)
20
Customer ドキュメントに対する索引
customer(386,"firstName") ="John"customer(386,"lastName")="Briggs"customer(386,"address")="123 Acacia Drive"
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var customer new this.documentStore.DocumentNode('customer');
index.forEachChild({prefix: 'Br'}, function(nodeName, childNode) { childNode.forEachChild(function(id) { // id を用いて、メインのデータ・レコードを指し示します var address =customer.$(id).$('address').value; // ... など });});
![Page 21: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/21.jpg)
21
同じ文字列で始まる索引を逆順に繰り返す
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
![Page 22: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/22.jpg)
22
同じ文字列で始まる索引を逆順に繰り返す
2016/9/18 EWD 3 トレーニング・コース #23
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild(function(id) { console.log(id) });});
![Page 23: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/23.jpg)
23
同じ文字列で始まる索引を逆順に繰り返す
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
制御オブジェクトを使うことで、先頭の文字列と検索順序を組み合わせて設定することができます
2016/9/18 EWD 3 トレーニング・コース #23
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild(function(id) { console.log(id) });});
![Page 24: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/24.jpg)
24
同じ文字列で始まる索引を逆順に繰り返す
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
制御オブジェクトを使うことで、先頭の文字列と検索順序を組み合わせて設定することができます
2016/9/18 EWD 3 トレーニング・コース #23
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild(function(id) { console.log(id) });}); 23
5321 210 386
![Page 25: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/25.jpg)
25
同じ文字列で始まる索引を逆順に繰り返す
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
制御オブジェクトを使うことで、先頭の文字列と検索順序を組み合わせて設定することができます
2016/9/18 EWD 3 トレーニング・コース #23
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild(function(id) { console.log(id) });}); 23
5321 210 386
内側のループは昇順です
![Page 26: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/26.jpg)
26
同じ文字列で始まる索引を逆順に繰り返す
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
内側のループについても逆順にするために制御オブジェクトを用います
2016/9/18 EWD 3 トレーニング・コース #23
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild({direction: 'reverse'}, function(id) { console.log(id) });});
![Page 27: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/27.jpg)
27
同じ文字列で始まる索引を逆順に繰り返す
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
内側のループについても逆順にするために制御オブジェクトを用います
2016/9/18 EWD 3 トレーニング・コース #23
var index = new this.documentStore.DocumentNode('myIndex');var params = {prefix: 'Br', direction: 'reverse'};index.forEachChild(params, function(nodeName, childNode) { childNode.forEachChild({direction: 'reverse'}, function(id) { console.log(id) });}); 5321
23 386 210
これで出力は完全に逆順になりました
![Page 28: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/28.jpg)
28
繰り返しの範囲を制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
添え字 1 から
添え字 2 まで
例えば、 Briggs から Davis まで
2016/9/18 EWD 3 トレーニング・コース #23
![Page 29: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/29.jpg)
29
繰り返しの範囲を制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
添え字 1 から
添え字 2 まで
例えば、 Briggs から Davis まで
forEachChild({ range: { from: 'Briggs', to: 'Davis' }}, function{...})
2016/9/18 EWD 3 トレーニング・コース #23
![Page 30: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/30.jpg)
30
繰り返しの範囲を制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
もっとありそうな制限方法
forEachChild({ range: { from: 'Br', to: 'Da' }}, function{...})
2016/9/18 EWD 3 トレーニング・コース #23
from と to で、返す節 ( ノード ) の始まる文字列を定義します
![Page 31: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/31.jpg)
31
繰り返しの範囲を制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
あるいは
forEachChild({ range: { from: 'B', to: 'D' }}, function{...})
2016/9/18 EWD 3 トレーニング・コース #23
from と to で、返す節 ( ノード ) の始まる文字列を定義します
![Page 32: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/32.jpg)
32
繰り返しの範囲を制限する
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var params = { range: { from: 'Br', to: 'Da" }};index.forEachChild(params, function(name, childNode){ childNode.forEachChild(function(id){ console.log(id); });});
2016/9/18 EWD 3 トレーニング・コース #23
![Page 33: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/33.jpg)
33
繰り返しの範囲を制限して逆順にする?
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var params = { range: { from: 'Br', to: 'Da" }};index.forEachChild(params, function(name, childNode){ childNode.forEachChild(function(id){ console.log(id); });});
2016/9/18 EWD 3 トレーニング・コース #23
210 386 23 5321 641 714 13 8142 9112
![Page 34: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/34.jpg)
34
繰り返しの範囲を制限して逆順にする?
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
2016/9/18 EWD 3 トレーニング・コース #23
![Page 35: EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く](https://reader030.vdocuments.pub/reader030/viewer/2022032613/58f192741a28ab94768b46db/html5/thumbnails/35.jpg)
35
繰り返しの範囲を制限して逆順にする?
myIndex("Andrews",103)=""myIndex("Barton",23)=""myIndex("Briggs",210)=""myIndex("Briggs",386)=""myIndex("Bryant",23)=""myIndex("Bryant",5321)=""myIndex("Davies",641)=""myIndex("Davies",714)=""myIndex("Davis",13)=""myIndex("Davis",8142)=""myIndex("Davis",9112)=""myIndex("Douglas",651)=""myIndex("Ennis",108)=""myIndex("Ennis",712)=""
var index = new this.documentStore.DocumentNode('myIndex');var params = { direction: 'reverse', range: { from: 'Br', to: 'Da" }};index.forEachChild(params, function(name, childNode){ childNode.forEachChild(function(id){ console.log(id); });});
制御オブジェクトには、範囲と逆順を組み合わせることができます
2016/9/18 EWD 3 トレーニング・コース #23