3
私はマングースを使用してNodejsアプリケーションでメモリ内とのMongoDBデータベースにMongoDBを使用してキャッシュを実装しています。ここではNodejs 8.9がasync/awaitサポートで使用されています。JavaScriptで
let get_func = async(userId) => {
let is_cached = await cache_user.findOne({ user_id: userId });
if(!is_cached){
console.log("NOT CACHIED");
let is_dbuser = await db_user.find({});
console.log(is_dbuser);
} else {
console.log("CACHED");
}
console.log("LEAVING get_func")
};
get_func(100);
そして、ここでは出力です:
NOT CACHIED
[]
LEAVING get_func
しかしdb_user
がデータで満たされていると使用して検証することができました。またlet is_error, is_dbuser = await db_user.find({});
場合で確認
db_user.find({}, function(err, users) {
if (err) throw err;
console.log(users);
});
をあります 関数がエラーを返し、その順序で結果を返すことを疑う。
どのようにしてこのネストされたawait文を処理する必要がありますか。 (しかし、機能が期待どおりに2秒待っているようです)。
は 'is_errorせ括弧の前にスペースが必要な場合がありますしない限り、それはfindByIdを使用する方が理にかなっていることに注意してください、 is_dbuser = db_user.find({})を待つ; 'うまく動作しない。約束が拒否された場合は、スローのように振る舞います。 –
約束を返すようです。他のmoongoseクエリとうまく動作します。内側の待ちだけに問題があります。 – Chathuranga94
私はMongooseで本格的な約束を得るには 'exec()'が必要であることを覚えているようです。しようとしました: 'b_user.find({})。exec()'? –