관련 모델과 별도 모델을로드하고 별도로보기에 제공하려는 명시적인 애플리케이션이 있습니다. 나는 관련 버스, 가족 및 사람 모델이 올바르게로드되어 있지만 이제는 volunteerTypes
을로드하고 별도의 개체로보기에 제공하려고합니다.명시하고 후속편 - 관련없는 모델을 같은 경로에로드하십시오.
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;
};
것은 당신이 공유 할 수 아래
은 수정 코드 (나는, 다른 하나는 자원 봉사자를 잡기 위해 그들을 버스를 얻고 돌연변이, 같은 시간에 하나를 두 가지 약속을 해결하기 위해Promise.all
를 사용하고 있습니다입니다 'addCount'의 내용은 그렇지 않다는 것을 이해하기가 어렵습니다 – asosnovsky@asosnovsky가 요청한 코드를 추가했습니다 – dtburgess