回答編集履歴
6
編集
test
CHANGED
@@ -34,10 +34,30 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
-
- `serializeUser` 「ユーザオブジェクトを与えてやるから,保存に成功したら`done`の第2引数ででユーザIDを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.」
|
37
|
+
- `serializeUser` 「ユーザオブジェクトを与えてやるから,保存に成功したら`done`の第2引数ででユーザIDを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.続く処理は俺(Passport)がやるからとりあえずその仕事だけよろしく.」
|
38
38
|
|
39
|
-
- `deserializeUser` 「ユーザIDを渡してやるから,復元に成功したら`done`の第2引数でユーザオブジェクトを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.」
|
39
|
+
- `deserializeUser` 「ユーザIDを渡してやるから,復元に成功したら`done`の第2引数でユーザオブジェクトを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.続く処理は俺(Passport)がやるからとりあえずその仕事だけよろしく.」
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
こういうことですね.実際にどのように保存や復元を行うかはプログラマが自由に選択できるということです.
|
43
|
+
こういうことですね.実際にどのように保存や復元を行うかはプログラマが自由に選択できるということです.関数の返り値を使わずにわざわざ`done`を実行させるのは,JavaScriptはおもに,非同期処理の実現にはコールバック関数モデルを採用しているからです.
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
```JavaScript
|
48
|
+
|
49
|
+
User.findById(id, function(err, user) {
|
50
|
+
|
51
|
+
/* 成功または失敗時の処理 */
|
52
|
+
|
53
|
+
});
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
`User.findById`がこのような使い方である以上,完了時に`done`を呼ばせるしかないですよね.
|
60
|
+
|
61
|
+
(もし`Promise`を返すような設計になっていれば必ずしもそうではないのですが…)
|
62
|
+
|
63
|
+
|
5
編集
test
CHANGED
@@ -34,9 +34,9 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
-
- `serializeUser` 「ユーザオブジェクト与えてやるから,保存に成功したら`done`でユーザIDを渡してくれ」
|
37
|
+
- `serializeUser` 「ユーザオブジェクトを与えてやるから,保存に成功したら`done`の第2引数ででユーザIDを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.」
|
38
38
|
|
39
|
-
- `deserializeUser` 「ユーザIDを渡してやるから,復元に成功したら`done`でユーザオブジェクトを渡してくれ」
|
39
|
+
- `deserializeUser` 「ユーザIDを渡してやるから,復元に成功したら`done`の第2引数でユーザオブジェクトを渡してくれ.エラーがあったときは第1引数にそれを渡してくれ.」
|
40
40
|
|
41
41
|
|
42
42
|
|
4
補足
test
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
要するに,`done`はEventEmitter的に,「成功したよ」「失敗したよ」と**Passport内部に対して**通知するイベントを発行しているようなものでしょうか.
|
29
|
+
要するに,`done`はEventEmitter的に,「成功したよ」「失敗したよ」と**Passport内部に対して**通知するイベントを発行しているようなものでしょうか.
|
30
30
|
|
31
31
|
|
32
32
|
|
@@ -34,4 +34,10 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
+
- `serializeUser` 「ユーザオブジェクト与えてやるから,保存に成功したら`done`でユーザIDを渡してくれ」
|
38
|
+
|
39
|
+
- `deserializeUser` 「ユーザIDを渡してやるから,復元に成功したら`done`でユーザオブジェクトを渡してくれ」
|
40
|
+
|
41
|
+
|
42
|
+
|
37
|
-
|
43
|
+
こういうことですね.実際にどのように保存や復元を行うかはプログラマが自由に選択できるということです.
|
3
入門記事の追加
test
CHANGED
@@ -2,19 +2,15 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
[JavaScript中級者への道【5. コールバック関数】 - Qiita](http://qiita.com/matsuby/items/3f635943f25e520b7c20)
|
6
|
+
|
5
|
-
[JavaScriptは如何にしてAsync/Awaitを獲得したのか Qiita版 - Qiita](http://qiita.com/gaogao_9/items/5417d01b4641357900c7)
|
7
|
+
(発展) [JavaScriptは如何にしてAsync/Awaitを獲得したのか Qiita版 - Qiita](http://qiita.com/gaogao_9/items/5417d01b4641357900c7)
|
8
|
+
|
9
|
+
(補足)[日本語のコードで理解するPromise - Qiita](http://qiita.com/mpyw/items/3e811d21a0877a51b8bd)
|
6
10
|
|
7
11
|
|
8
12
|
|
9
13
|
ここでの`function () { ... } `は「準備ができたタイミングで関数を呼ぶ」の対象となるそれです.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
Promiseに関しての補足↓
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
[日本語のコードで理解するPromise - Qiita](http://qiita.com/mpyw/items/3e811d21a0877a51b8bd)
|
18
14
|
|
19
15
|
|
20
16
|
|
2
編集
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
下記記事に詳細な解説があるので読んでみてください.
|
1
|
+
コールバック関数等に関しては,下記記事に詳細な解説があるので読んでみてください.
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -10,12 +10,32 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
---
|
14
|
-
|
15
|
-
|
16
|
-
|
17
13
|
Promiseに関しての補足↓
|
18
14
|
|
19
15
|
|
20
16
|
|
21
17
|
[日本語のコードで理解するPromise - Qiita](http://qiita.com/mpyw/items/3e811d21a0877a51b8bd)
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
---
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Passportの`done`に関しては以下に日本語で説明があります.
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
[Passport | 設定](http://knimon-software.github.io/www.passportjs.org/guide/configure/)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
要するに,`done`はEventEmitter的に,「成功したよ」「失敗したよ」と**Passport内部に対して**通知するイベントを発行しているようなものでしょうか.serializeUserの実行だけで十分な気もしますが
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
> このようにストラテジーに処理を委譲することで、検証用コールバックは、Passportとデータベースを疎に保ちます。 これによりアプリケーションは、認証レイヤーでの様々な前提条件にとらわれず、ユーザー情報をどのように格納するか自由に選択できます。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
というように,複雑な条件が絡んできたときに対処しやすくする工夫だそうです.
|
1
ミス
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
ここでの`
|
9
|
+
ここでの`function () { ... } `は「準備ができたタイミングで関数を呼ぶ」の対象となるそれです.
|
10
10
|
|
11
11
|
|
12
12
|
|