Express를 통해 Node를 발견했습니다 (사용했던 Meteor 대신). 그리고 함수 아래 .. 비동기 일의 종류에 의해 데이터베이스를 읽은 후에 만 스위치의 '대소 문자'를 선택하십시오.
을 궁지하고) (스위치로function isAuthorized(x) {
// Connect to database when Bq. receives a message
mongoClient.connect(process.env.MONGO, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server')
} else {
console.log('Connection established')
let Users = db.collection('users')
Users.find({_id: From}).toArray(function (err, result) {
if (err) { console.log(err) }
else if (result.length) {
console.log("found");
// switch (true) {
// case x == null && result.authorization == null : return true
// break ;
// case x == false && result.authorization == false : return true
// break ;
// case x == true && result.authorization == true : return true
// break ;
// default: return false
//} // end of switch()
}
else {
console.log("does not exist");
if (x == 'unknown user') { console.log("return true"); return true }
}
db.close()
})
}
})
} // end of isAuthorized()
이 함수가 호출된다 (A 몽고 수집을 읽을 수 있습니다).
switch (true) {
case isAuthorized('unknown user') : something
case XYZ
case ABC
Default: console.log("default")
}
문제이다 스위치()가 isAuthorized() 함수가 끝나기 전에 불. 따라서 switch()는 isAuthorized ('unknown user') == true 대신 default case를 실행합니다. 함수가 데이터베이스를 읽을 때까지 기다리지 않는 것처럼 보입니다. ...
switch()가 함수의 끝을 기다리는 것을 어떻게 할 수 있습니까?
콜백에 대해 들었습니다. 비동기지만,이 모든 것을 명확한 순서로 정렬 할 수는 없습니다. 간단한 아이디어/도움이 필요하십니까?
대단히 감사합니다.
답장을 보내 주셔서 감사합니다. 그러나 나는 약속을 사용하여 다른 방향으로 나아 갔다. 내 스위치를 실행하기 전에 실행해야하는 기능은'promise (resolve, reject)'이고 내 스위치는'promise.all (...). 그때 (..'트릭을 했어. 그것이 유효한 일의 방법인지 아십시오 ... – nerotulip