私は約束と非同期javascriptの仕事について本当に混乱しています。私は/ userとquery mongoでGETを行い、最初のクエリの結果が何らかの方法で処理されて2番目のクエリのクエリを形成し、そのクエリの結果が3番目のクエリのクエリになるようにしたい。expressjsとmongodbを使用して約束/コールバックを使用するには?
基本的には、最終的なmongo結果の結果をres.send(result)を介してクライアントに送り返したいと思います。
これを実行する適切な方法は、クライアントが3番目のネストされたmongoクエリの結果で200 OKを返すようにすることです。
app.get('/user', function (req, res, next) {
var query = {"isRegistered": false }
db.collection('users', function (err, collection) {
collection.find(query).toArray(function (err, result) {
if (err) {
console.log(err)
}
else {
if (result.length > 0) {
// do some random processing
var randomUser = result[Math.floor(Math.random() * result.length)]
// do ANOTHER db query
query = {"age": randomUser.age}
collection.find(query).toArray(function (err,result) {
if (err) {
console.log(err)
}
else {
// do some other logic ...
query = {something}
collection.find(query).toArray(function (err,result) {
if (err) {
console.log(err);
}
else {
// FINALLY RETURN THIS RESULT
res.send(result);
next()
}
})
}
})
}
}
});
});
追加するだけで、必要な200のステータスコードに対してres.status(200)を実行します。 – JonLuca
@JonLuca - それに私はもっと多くの機能やものを追加する必要がありますが、大丈夫です。 – adeneo
@adeneoありがとう!私はあなたが見てみることができる場合は、これに関連する別のフォローアップの質問があります:https://stackoverflow.com/questions/45123212/nodejs-how-do-i-conditionally-restart-the-promise-chain-from-the始める – noobprogrammer