こんにちは、私はmongooseのfindから返された要素にアクセスしようとしていて、非同期とコールバックの状況にいくつかの問題があります。返されたmongooseのオブジェクトを取得します。
ここでは、理解を深めるためのコードを示します。
function retrieveBudgets(email, callback) {
models.User.find({email: email},{budget:true}, function(err,budgets) {
if (err) {
callback(err, null);
} else {
callback(null, budgets);
}
});
};
retrieveBudgets(user.email, function(err, budgets) {
if (err) {
console.log(err);
}
budgets.forEach(function(budget){
console.log(JSON.stringify(budget, null, 4));
});
});
だから、この行console.log(JSON.stringify(budget, null, 4));
は正しく動作し、JSON形式で画面にオブジェクトを印刷するが、どのように私はここからオブジェクトの配列にそれぞれを保存しますか?この同じ行で配列にプッシュしようとすると、エラーが発生します。
私は似たような質問をいくつか見てきましたが、私はそれらといっしょに前進していません。 編集:____________________________________________________ 私はそれを働かせるために少しハックをしました。私はres.renderを動かしました。ページをレンダリングするのはコールバックと同時に行われましたが、これは正しい解決策であると考えています。
var user=req.session.user;
res.locals.budgets=[];
function retrieveBudgets(email, callback) {
models.User.find({email: email},{budget:true}, function(err, budgets) {
if (err) {
callback(err, null);
} else {
callback(null, budgets);
}
});
};
retrieveBudgets(user.email, function(err, budgets) {
if (err) {
console.log(err);
}
res.locals.budgets = budgets.map((function(b){ return b; });
res.render('budget/budget.jade',{ csrfToken: req.csrfToken() });
});
これは私が地元の人たちから予算にアクセスできるようにするため、これについてのフィードバックはすばらしいことでしょう。
私はそれを持っていると思っていましたが、myNewArrayを外部で使用しようとすると、スコープ内で宣言しても、私が本当にやりたいことはクエリの外で予算を使用するので、ビュー – homerjay
はあなたのコメントに基づいて私の答えを更新しました –
最終的にそこに着いてくれてありがとう – homerjay