내 사용자 컨트롤러 내에 인덱스 동작이 있습니다. 두 가지 작업을 연속으로 수행하려고하는데 원하는 작업을 실행하지 않습니다. res.json() 메서드를 사용하여 둘 다 완료 할 수 있도록합니다.Promise - Promise 및 Bluebird Promise.each, Promise.map, Promise.all 등을 연결합니다.
사용자를 참여시키는 우정 조인 모델이 있습니다. 한 열은 frienderId이고 한 열은 friendedId입니다. 아래의 인덱스 함수에서 원하는 결과는 친구 인 단일 사용자 객체로 끝나게된다는 것입니다. 아래에 약속해야하는 이유는 사용자가 frienderId 열 또는 friendedId 열에있을 수 있기 때문입니다. 따라서 req.user의 친구에 대한 두 가지 상황을 본질적으로 파싱해야합니다.
마지막으로 반환되는 문제는 I.E. res.json (result)는 항상 올바른 친구를 반환하지만 원하는 객체보다 먼저 또는 그 다음에 빈 배열 []을 반환합니다. 이 빈 배열은 결과가없는 두 가지 약속 시나리오 중 하나에서 비롯됩니다. sayyy..reject와 같은 해결 대신에 어떤 유형의 메소드가 있습니까? 그곳에서 전화를 걸면 약속 전체가 약속의 집으로 밀려 들지 않을 것입니까? 그렇다면 나는 단지 (if friended) {reject} 또는 if (! friender) {reject}
각각의 약속을 통해 열거하고 각각의 결과를 제공한다는 것을 이해합니다. 그러나, 나는 각 약속의 결과를 원하지 않는다, 나는 단지 각 약속 실행의 부작용에 접근하고 싶다.
감사합니다.
index: function(req, res) {
var promiseArray = [];
promiseArray.push(new Promise(function(resolve) {
user.findById(req.user.id).then(function(user) {
user.getFrienders({
where: {
username: req.body.username
}
}).then(function(friender) {
resolve(friender[0])
})
})
}));
promiseArray.push(new Promise(function(resolve) {
user.findById(req.user.id).then(function(user) {
user.getFriendeds({
where: {
username: req.body.username
}
}).then(function(friended) {
resolve(friended[0])
})
})
}));
Sequelize.Promise.map(promiseArray, function(result) {
res.json(result);
});
}
또 다른 이상한 점은 바로 하단의 res.json (결과) 대신에 var promiseArray의 맨 아래에 var friend, 그 다음 console.log (friend)라는 정의되지 않은 변수를 추가하는 것입니다. 첫 번째는 정의되지 않았고, 두 번째는 올바른 친구 객체이고, 그 반대의 경우는 사용자가 존재하는 열 (frienderId 또는 friendedId)에 따라 다릅니다. 콘솔에서 하나의 변수를 로깅 할 때 두 개의 완전히 다른 값이 기록 될 수 있다는 점에서 매우 혼란 스럽습니다. 고마워. –
안녕하세요 형제 님, 좀 더 명확한 내용이 필요하면 내 게시물에 대한 후속 질문을 할 수 있으면 좋을 것입니다. 그렇지 않으면 내 대답이 도움을 준 경우 동의합니다. –