質問編集履歴

2

タイトルが抽象的であったので変更した.

2021/02/01 10:22

投稿

undesu_
undesu_

スコア1

test CHANGED
@@ -1 +1 @@
1
- NodeJSのasync awaitについて
1
+ NodeJSのMongoDBにおけるasync awaitによる同期処理
test CHANGED
File without changes

1

さらなるエラーが発生したので追記した.

2021/02/01 10:22

投稿

undesu_
undesu_

スコア1

test CHANGED
File without changes
test CHANGED
@@ -157,3 +157,141 @@
157
157
  }
158
158
 
159
159
  ```
160
+
161
+ ###続き
162
+
163
+ yambejpの回答によって,「SyntaxError: await is only valid in async function」の問題は解決しました.
164
+
165
+ プログラムを直して以下の「ソースコード2」のようにしました,実行したところ,以下の「コンソール・エラーメッセージ」のような出力とエラーが出ました.
166
+
167
+ これは,get_Collection()を待たずにclient.close();が実行されたことによって発生しています.
168
+
169
+ どうすれば,in_Collection() → get_Collection() → client.close();の順番に実行されるのでしょうか.
170
+
171
+
172
+
173
+ #### ソースコード2
174
+
175
+ ```js
176
+
177
+ const mongodb = require("mongodb")
178
+
179
+ const MongoClient = mongodb.MongoClient
180
+
181
+
182
+
183
+ const connectOption = {
184
+
185
+ useNewUrlParser: true,
186
+
187
+ useUnifiedTopology: true,
188
+
189
+ }
190
+
191
+
192
+
193
+
194
+
195
+ const dataBase = MongoClient.connect("mongodb://localhost:27017",connectOption, async(err, client) => {
196
+
197
+ //エラーやったら投げる
198
+
199
+ if (err) throw err;
200
+
201
+ //コネクトできた
202
+
203
+ console.log("Connected successfully to server");
204
+
205
+
206
+
207
+ //Mongo3.0から,明示しないといけない
208
+
209
+ const db = client.db("myDB");
210
+
211
+ // 追加
212
+
213
+ await in_Collection(db);
214
+
215
+ //取得
216
+
217
+ await get_Collection(db);
218
+
219
+ console.log("3333")
220
+
221
+ await client.close();
222
+
223
+ });
224
+
225
+
226
+
227
+ const in_Collection = (db) => {
228
+
229
+ console.log("1111")
230
+
231
+ const documents = [
232
+
233
+ { a: 1 },
234
+
235
+ { a: 2 },
236
+
237
+ { a: 3 }
238
+
239
+ ];
240
+
241
+ db.collection("documents").insertMany(documents, (err, result) => {
242
+
243
+ })
244
+
245
+ }
246
+
247
+
248
+
249
+ const get_Collection = (db) => {
250
+
251
+ //コレクションを配列にして,resultにいれる.
252
+
253
+ db.collection("documents").find({}).toArray( (err, result) => {
254
+
255
+ console.log("2222")
256
+
257
+ if (err) throw err;
258
+
259
+ console.log(result)
260
+
261
+ })
262
+
263
+ }
264
+
265
+
266
+
267
+
268
+
269
+ ```
270
+
271
+
272
+
273
+ ### コンソール・エラーメッセージ
274
+
275
+ ```
276
+
277
+ Connected successfully to server
278
+
279
+ 1111
280
+
281
+ 3333
282
+
283
+ 2222
284
+
285
+
286
+
287
+ C:\Users\name\OneDrive\デスクトップ\NodeJS\node_modules\mongodb\lib\utils.js:671
288
+
289
+ throw error;
290
+
291
+ ^
292
+
293
+ MongoError: Cannot use a session that has ended
294
+
295
+
296
+
297
+ ```