Express経由のノードを発見しました(使用していた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()
(Mongoのコレクションを読み取るために)関数の下にこの関数は)(スイッチに呼ばれています。
switch (true) {
case isAuthorized('unknown user') : something
case XYZ
case ABC
Default: console.log("default")
}
問題がある: スイッチ()のisAuthorized()関数の終了前に火災。したがって、switch()はisAuthorized( 'unknown user')== trueの代わりにデフォルトのケースを起動します。関数がデータベースが読み込まれるのを待っているようではありません。
関数()の最後がswitch()を待つことができますか?
私はコールバックのことを聞いたことがありますが、非同期ですが、私はすべてのことを明確な順序で並べ替えることはできません。
ありがとうございました。
ありがとうございました。しかし、私は「約束」を使って別の方向に行きました。私のスイッチを実行する前に実行する必要のある機能は 'promise(resolve、reject)'であり、私のスイッチは 'promise.all(...)の中にあります。それが有効な働き方であるかどうかを知る... – nerotulip