質問編集履歴

2

processを使ってみたが上手くいきません

2018/11/26 13:28

投稿

mote
mote

スコア128

test CHANGED
File without changes
test CHANGED
@@ -144,51 +144,69 @@
144
144
 
145
145
  promiseを使って書き直して見たのですが、
146
146
 
147
- 「promiseはコンストラクタはありません」いうエラー出てしまた。
148
-
149
-
150
-
151
- ```js
152
-
153
- let Promise = require("Promise")
154
-
155
- login(){
156
-
157
- console.log("login") ;
158
-
159
-
160
-
161
- MongoClient.connect(url,{ useNewUrlParser: true }, (err, db) =>{
162
-
163
-
164
-
165
- if (err) throw err ;
166
-
167
- let myobj = {name : this.name, password : this.password } ;
168
-
169
- let dbo = db.db("mydb");
170
-
171
- function async(){
172
-
173
- return new Promise(function (resolve, reject) {
174
-
175
- dbo.collection("students").findOne(myobj,(err,result)=>{
176
-
177
- if(result==null){
178
-
179
- console.log("あなたは登録されていません");
180
-
181
- resolve(ture) ;
182
-
183
- }else{
184
-
185
- console.log("name:" + this.name + ",password:" + this.password + "は既に登録しています");
186
-
187
- reject(false) ;
188
-
189
- }
190
-
191
- db.close() ;
147
+ async()関数無いないawaitFunc()使えなのでょうか??
148
+
149
+
150
+
151
+ 自分はこのawaitFuncを別のページでif文の分岐で使いたいです
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+ ```js
160
+
161
+ login(){
162
+
163
+ console.log("login") ;
164
+
165
+
166
+
167
+ MongoClient.connect(url,{ useNewUrlParser: true }, (err, db) =>{
168
+
169
+ if (err) throw err ;
170
+
171
+ let myobj = {name : this.name, password : this.password } ;
172
+
173
+ let dbo = db.db("mydb");
174
+
175
+
176
+
177
+
178
+
179
+ dbo.collection("students").findOne(myobj,(err,result)=>{
180
+
181
+ const func = async () => {
182
+
183
+ let flag = false ;
184
+
185
+ if(result==null){
186
+
187
+ console.log("あなたは登録されていません")
188
+
189
+ return = false ;
190
+
191
+ }else{
192
+
193
+ console.log("name:" + this.name + ",password:" + this.password + "は既に登録しています") ;
194
+
195
+ return = true ;
196
+
197
+ }
198
+
199
+ db.close() ;
200
+
201
+
202
+
203
+ const awaitFunc = async () => {
204
+
205
+ console.log(await func());
206
+
207
+ };
208
+
209
+ awaitFunc();
192
210
 
193
211
  });
194
212
 
@@ -196,28 +214,78 @@
196
214
 
197
215
  }
198
216
 
217
+ ```
218
+
219
+
220
+
221
+ というように書き直したのですが、
222
+
199
- async.then(function (value) {
223
+ 自分のやりたいことは下のような事です。
200
-
224
+
201
- console.log(value); // => 'Async Hello world'
225
+ 要は、login()関数を呼び出したらtrue or falseが返って来るようにしたいのです
202
-
226
+
203
- }).catch(function (error) {
227
+ processでは不可能なのでしょうか!?
228
+
204
-
229
+ ```js
230
+
231
+ login(){
232
+
205
- console.error(error);
233
+ console.log("login") ;
234
+
235
+
236
+
206
-
237
+ MongoClient.connect(url,{ useNewUrlParser: true }, (err, db) =>{
238
+
239
+ if (err) throw err ;
240
+
241
+ let myobj = {name : this.name, password : this.password } ;
242
+
243
+ let dbo = db.db("mydb");
244
+
245
+
246
+
247
+
248
+
249
+ dbo.collection("students").findOne(myobj,(err,result)=>{
250
+
251
+ const func = async () => {
252
+
253
+ let flag = false ;
254
+
255
+ if(result==null){
256
+
257
+ console.log("あなたは登録されていません")
258
+
259
+ return = false ;
260
+
261
+ }else{
262
+
263
+ console.log("name:" + this.name + ",password:" + this.password + "は既に登録しています") ;
264
+
265
+ return = true ;
266
+
267
+ }
268
+
269
+ db.close() ;
270
+
271
+
272
+
273
+ const awaitFunc = async () => {
274
+
275
+ await func()
276
+
277
+ };
278
+
279
+
280
+
207
- });
281
+ });
208
-
282
+
209
- });
283
+ });
284
+
210
-
285
+ let a =awaitFunc();
286
+
287
+ return a ;
288
+
211
- }
289
+ }
212
-
213
-
214
-
215
-
216
-
217
- console.log(login());
290
+
218
-
219
- ```
291
+ ```
220
-
221
-
222
-
223
- というように書き直したのですが、上手くいませんでした。

1

追記

2018/11/26 13:28

投稿

mote
mote

スコア128

test CHANGED
File without changes
test CHANGED
@@ -135,3 +135,89 @@
135
135
 
136
136
 
137
137
  どなたかよろしくお願いいたします
138
+
139
+
140
+
141
+ 追記
142
+
143
+ ご回答していただいた通り、
144
+
145
+ promiseを使って書き直して見たのですが、
146
+
147
+ 「promiseはコンストラクタではありません」というエラーが出てしまいました。
148
+
149
+
150
+
151
+ ```js
152
+
153
+ let Promise = require("Promise")
154
+
155
+ login(){
156
+
157
+ console.log("login") ;
158
+
159
+
160
+
161
+ MongoClient.connect(url,{ useNewUrlParser: true }, (err, db) =>{
162
+
163
+
164
+
165
+ if (err) throw err ;
166
+
167
+ let myobj = {name : this.name, password : this.password } ;
168
+
169
+ let dbo = db.db("mydb");
170
+
171
+ function async(){
172
+
173
+ return new Promise(function (resolve, reject) {
174
+
175
+ dbo.collection("students").findOne(myobj,(err,result)=>{
176
+
177
+ if(result==null){
178
+
179
+ console.log("あなたは登録されていません");
180
+
181
+ resolve(ture) ;
182
+
183
+ }else{
184
+
185
+ console.log("name:" + this.name + ",password:" + this.password + "は既に登録しています");
186
+
187
+ reject(false) ;
188
+
189
+ }
190
+
191
+ db.close() ;
192
+
193
+ });
194
+
195
+ });
196
+
197
+ }
198
+
199
+ async.then(function (value) {
200
+
201
+ console.log(value); // => 'Async Hello world'
202
+
203
+ }).catch(function (error) {
204
+
205
+ console.error(error);
206
+
207
+ });
208
+
209
+ });
210
+
211
+ }
212
+
213
+
214
+
215
+
216
+
217
+ console.log(login());
218
+
219
+ ```
220
+
221
+
222
+
223
+ というように書き直したのですが、上手くいませんでした。