2
나는 다음과 같은 코드 (몽구스는 블루 버드 promisified 된) 한 채 웁니다는 몽구스는 약속을 저장하고
function createNewCourse(courseInfo, teacherName) {
var newCourse = new courseModel({
cn: courseInfo.courseName,
cid: courseInfo.courseId
});
return newCourse.saveAsync()
.then(function (savedCourse) {
var newTeacher = new newTeacherModel({
na: teacherName,
_co: savedCourse._id // This would be an array
});
return newTeacher.saveAsync().then(function() {
return newCourse;
});
});
}
이 내 문제의 단순화이지만 잘 보여줍니다. 내 createNewCourse 함수가 일단 해결되면 새로 저장 한 과정을 반환하겠다는 약속을 반환하길 원합니다. 은 교사가 아니요입니다. 위의 코드는 작동하지만 우아한 것은 아니며 콜백 지옥을 피하기 위해 약속을 잘 사용하지 않습니다.
내가 고려한 또 다른 옵션은 코스를 반환 한 다음 데이터를 채우는 것이지만 데이터베이스를 다시 쿼리하는 것입니다.
아이디어를 줄이는 방법은 무엇입니까?
편집는 : 작품 체인 방법
function createNewCourse(courseInfo, teacherName) {
var newCourse = new courseModel({
cn: courseInfo.courseName,
cid: courseInfo.courseId
});
return newCourse.saveAsync().then(function (savedCourse) {
var newTeacher = new newTeacherModel({
na: teacherName,
_co: savedCourse._id // This would be an array
});
return newTeacher.saveAsync();
}).return(newCourse);
}
기억 나는
function createNewCourse(courseInfo, teacherName, callback) {
var newCourse = new courseModel({
cn: courseInfo.courseName,
cid: courseInfo.courseId
});
newCourse.save(function(err, savedCourse) {
var newTeacher = new newTeacherModel({
na: teacherName,
_co: savedCourse._id // This would be an array
});
newTeacher.save(function(err, savedTeacher) {
callback(null, newCourse);
});
});
}