我正在尝试通过递归方法(通过Mongoose
)保存多个文档。
我创建了一个Promise
,它解析了一种方法admin_save_choices()
来保存Array
的文档,并在保存文档后最终返回Array
的{{1}}或错误信息。当文档保存在回调中时,它会递归调用自身(Objects
)直到存在admin_save_choices()
元素。
这里是Array
-
Promise
这是方法-
let choices_object_array_promise = new Promise(function(resolve, reject) {
let choices_object_array = admin_save_choices(choices, timestamp);
resolve(choices_object_array);
});
choices_object_array_promise.then(function(result){
console.log(result);
res.status(200);
res.json('success');
}).catch(function(error) {
res.status(400);
res.json('error');
});
所有文档都已成功保存,除了我没有得到结果返回到var admin_save_choices = function(choices, timestamp) {
let choices_object_array = [];
let choice = choices.shift();
if (typeof choice === "undefined")
return choices_object_array;
let choice_information = {
choice: choice,
created_time: timestamp
};
let save_choice_promise = choiceModel.save_choice(choice_information);
save_choice_promise.then(function(choice_result_object) {
choices_object_array.push(choice_result_object);
admin_save_choices(choices, timestamp);
}).catch(function(error) {
return 'error';
});
}
回调。
它在choices_object_array_promise.then(
中显示undefined
谢谢。
答案 0 :(得分:2)
这是因为admin_save_choices
不返回任何内容。
我猜您正在尝试返回admin数组,也许这就是您想要做的事情:
// inside admin_save_choices
return save_choice_promise
.then(function(choice_result_object) {
choices_object_array.push(choice_result_object);
return admin_save_choices(choices, timestamp);
}).catch(function(error) {
return error;
});
}
let choices_object_array_fn = new Promise(function(resolve) {
resolve(admin_save_choices(choices, timestamp));
});
编辑:出于防反模式的考虑:)