私は関連するモデルと別個のモデルをロードして別々にビューに提供したいという明示的なアプリケーションを持っています。私は、関連するバス、家族、人物のモデルが正しく読み込まれているが、現在はvolunteerTypes
をロードして別のオブジェクトとしてビューに供給したい。ExpressとSequelize - 無関係なモデルを同じルートにロードする
exports.get = (request, response) => {
bus.findAll({include: [{model: family, include: [person]}]})
.then(buses => buses.map(addCount))
.then(volunteerTypes => volunteerType.findAll())
.then((buses, volunteerTypes) => response.render('pages/register', {buses: buses, volunteerTypes: volunteerTypes}));
};
私は、しかし、私はこのための適切な構文を決定することができていない、これはシンプルであるべきだと思います。 sequelize docsには熱心な読み込みを使用して関連するデータを読み込む例がたくさんありますが、別々のモデルを読み込む方法を示す例があります。 FWIWの場合、ノード・コンソールの出力は、volunteerType
モデルに対する別の照会が実行されていることを示します。これは、ビューに渡すことができるように、このクエリの結果を適切に格納するという問題になるかもしれません。
更新:addCount
は、単にバス配列内の各バスにプロパティを追加しています。私はそれが私の質問に関連していると思いますが、ここで要求されるようにコードされていない:
const atCampPeople = thisFamily => thisFamily.dataValues.people.filter(pers => pers.isAtCampPerson).length;
const countPeople = (count, thisFamily) => count + atCampPeople(thisFamily);
const addCount = thisBus => {
thisBus.dataValues.count = thisBus.dataValues.families.reduce(countPeople, 0);
return thisBus.dataValues;
};
あなたが共有することができます。以下は
は修正されたコード(ボランティアをつかむために、他の、1はバスを取得し、それらを変異させる、私は同時に2つの異なる約束を解決するために
Promise.all
を使用していますので注意です'addCount'の内容は、そうでなければこれを理解するのが難しいです – asosnovsky@asosnovskyは要求通りにコードを追加しました – dtburgess