node.js を使用して大規模なプロジェクトを開始したばかりで、コールバックの悪夢の問題に遭遇しました。以前にいくつかの node.js 開発を行ったことがありますが、チュートリアルに基づいた小さなものだけです。
私はユーザーモデルとそのユーザーの所有者である所有者モデルを持っています...基本的に、node.jsで構築している部分はRESTサービスになるため、ユーザーとその所有者名を含むjsonを送信する必要があります。私の問題は、ルビーやphpで行うように所有者名を取得しようとしていて、それをプロパティとして設定しようとしています..しかし、うまくいきません。
コールバック関数でオブジェクトを変更する必要がある node.js で、この種のロジックをどのように処理するのでしょうか? また、パフォーマンスに影響を与えたくありません。
これは要件だったので、データベースとして mysql を使用しています。したがって、コードは次のとおりです。
//find all
req.models.users.find({
'id' : req.query.id
}, function(err, users) {
if (err) console.log(err); //do something better here
else {
var json = [];
users.forEach(function(user) {
user.getOwner(function(err, owner) {
user.accountOwner = owner.name;
json.push(user;
});
});
res.type('application/json');
res.send(json);
}
});
次のようなものを送信したい: [{ 'id': user.id, 'username": user.username, 'email': user.email, 'owner': user.owner.name' }, {... }]