回答編集履歴

2

文章の流れを修正

2021/01/20 15:51

投稿

miyabi-sun
miyabi-sun

スコア21203

test CHANGED
@@ -22,41 +22,59 @@
22
22
 
23
23
  そしてそこを書いてないって事は、
24
24
 
25
- Promise関しの知識が足りてなと言って良いじゃないかと思います。
25
+ エスパー予測するならばこの位置記載されていと思います。
26
26
 
27
27
 
28
28
 
29
+ ```js
30
+
31
+ var gl_result = {};
32
+
33
+ app.get('/', (request, response ) =>{
34
+
35
+ const promise1 = new promise((resolve, reject)=>{
36
+
37
+ var sql = "select * from test";
38
+
39
+ con.query(sql, function(err, result){
40
+
29
- なので、実務ベースでどうしていけば良いかに着目して回答していきます。
41
+ if(err) return console.log(err);
42
+
43
+ gl_result = result;
44
+
45
+ // resolve(); // <- もしこの位置なら取れているはず
46
+
47
+ });
48
+
49
+ resolve(); // <- 多分ここにあるんでしょ?
50
+
51
+ })
52
+
53
+ // 中略
54
+
55
+ .then(() => {
56
+
57
+ console.log(gl_result); // ←ここで {} しか表示されない
58
+
59
+ })
60
+
61
+ });
62
+
63
+ ```
30
64
 
31
65
 
32
66
 
33
- ---
67
+ Promiseに関しての知識がまだ足りてなさそうです。
68
+
69
+ もう少しPromiseとはなんぞやを勉強すれば先にすすめるでしょう。
34
70
 
35
71
 
36
72
 
37
- まずnpmライブラリmysqlを使っているならば、
73
+ しかし、こペースだと実務で使い物になコードにたどり着くのはかり先になりそうです。
38
74
 
39
- [mysql2](https://www.npmjs.com/package/mysql2)に乗換えましょう
75
+ Promiseとかコールバック関数とかノイズなんで出来れば削たいところ
40
76
 
41
-
42
-
43
- 参考記事: [node.js MySQLではなくMySQL2を使ったほうがいいみたい](https://cfautog.tokyo/2020/04/09/node-js-mysql2/)
44
-
45
-
46
-
47
- そしてPromiseを同期風に記述できるES7のasync/await 構文を学習しましょう。
48
-
49
-
50
-
51
- - [async - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function)
52
-
53
- - [await - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/await)
54
-
55
- - [ES7 Async Awaitのサンプル - mysql2のドキュメント](https://github.com/sidorares/node-mysql2/blob/master/documentation/Promise-Wrapper.md#es7-async-await)
56
-
57
-
58
-
59
- それを元質問文で書かれているコードの部分async/await方式で記述しなおすとこうなります。
77
+ なので先完成形見せます。
60
78
 
61
79
 
62
80
 
@@ -65,8 +83,6 @@
65
83
  // app.js -> インデントをスペース2個にしてる
66
84
 
67
85
  const mysql = require("mysql2/promise");
68
-
69
- const gl_result = {};
70
86
 
71
87
 
72
88
 
@@ -89,6 +105,8 @@
89
105
 
90
106
 
91
107
  app.set('ejs', ejs.renderFile);
108
+
109
+
92
110
 
93
111
  // await構文を使うには、async関数であることが重要なので、
94
112
 
@@ -143,3 +161,31 @@
143
161
  });
144
162
 
145
163
  ```
164
+
165
+
166
+
167
+ まずnpmのライブラリでmysqlを使っているならば、
168
+
169
+ とりあえず[mysql2](https://www.npmjs.com/package/mysql2)に乗り換えましょう。
170
+
171
+
172
+
173
+ 参考記事: [node.js MySQLではなくMySQL2を使ったほうがいいみたい](https://cfautog.tokyo/2020/04/09/node-js-mysql2/)
174
+
175
+
176
+
177
+ そしてPromiseを同期風に記述できるES7のasync/await 構文を学習しましょう。
178
+
179
+
180
+
181
+ - [async - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function)
182
+
183
+ - [await - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/await)
184
+
185
+ - [ES7 Async Awaitのサンプル - mysql2のドキュメント](https://github.com/sidorares/node-mysql2/blob/master/documentation/Promise-Wrapper.md#es7-async-await)
186
+
187
+
188
+
189
+ それを元に質問文で書かれているコードの部分をasync/await方式で記述しなおすと完成形のコードになります。
190
+
191
+ このコードを資本に色々と理解を深めてPromiseやasync/awaitを使いこなしていきましょう。

1

ぷち修正

2021/01/20 15:51

投稿

miyabi-sun
miyabi-sun

スコア21203

test CHANGED
@@ -124,6 +124,10 @@
124
124
 
125
125
  } catch (e) {
126
126
 
127
+ // エラー処理は1個の大きなtry-catchで包んでいる
128
+
129
+ // これもasync関数の恩恵で、Promise.catchの糖衣構文になっている
130
+
127
131
  console.error(e);
128
132
 
129
133
  }
@@ -132,9 +136,9 @@
132
136
 
133
137
 
134
138
 
135
- app.listen(3000,() =>{
139
+ app.listen(3000, () => {
136
140
 
137
- console.log('server start');
141
+ console.log('server start');
138
142
 
139
143
  });
140
144