약속에 대해 몇 가지 오해 한 것 같습니다.
주어진 getTeamPromise.then(onResolve, onReject)
:
- onResolve 및 onReject에서는 약속이 이미 해결 / 거부되었으므로 동일한 약속에 대해 resolve를 호출하여 상태를 변경할 수 없습니다.
- resolve (function ())는 첫 번째 결과에서 처리 된 결과 여야합니다.
- 일반적으로 약속의 상태를 조작해서는 안되며, 호출하는 많은 메서드는 약속을 만들고 채우는 내부 메서드입니다.
- onResolve 핸들러에서 프라 미스를 반환하면 해당 프라 미스 또는 값을 다음으로 파이프합니다.
then
이것을-아마도-작동 방식으로 작성하겠습니다.
saveTeamMatch.then(function saveTeamMatchToTeam(teamMatch) {
console.log('TEAM_MATCH in SAVE to TEAM', teamMatch); //works
// when a team is gotten and a teamMatch is made and saved
// save the teamMatch to the team
return Team
.findOneAndUpdate({id:1540}, {$push:{matches:teamMatch}}).exec()
.then(function successfullySaveTeamMatchToTeam(team) {
console.log('TEAM in SUCCESSFUL SAVE', team);
return team;
}, function failToUpdateTeam(err) {
console.error('failedToUpdateTeam', err);
});
},function failToSaveTeamMatch(err) {
console.error('saveTeamMatch failed', err);
})
.end();
출처
https://stackoverflow.com/questions/22006827