javascript - async.waterfall 最后没有渲染
问题描述
我尝试使用 async.waterfall 来清理我的代码。我有两个问题,这是我的代码。
async.forEachOf(req.files, (value, key, callback) => {
imagesController.create(req, res, idCreation, req.files[key].filename, imageData[key].ext)
})
async.waterfall([
function(callback) {
exhibitionController.create(req,res, idCreation, req.body.exhibitionName, req.body.galery, req.body.exhibitionBegin, req.body.exhibitionEnds)
},
function(exhibition, callback) {
creationsController.findThisCreation(req, res, idCreation)
}],
function(err, creation) {
if(!err){
res.send(creation)
}
})
使用此代码,我的数据库中的所有内容都已设置,数据已保存,但瀑布末尾的 res.send(datas) 不起作用。相反,我的表单页面仍在加载。
另一个问题是代码的优化:我试图在瀑布函数中插入 forEach,但是除了我的图像之外的所有数据都被保存了。
我还尝试在 forEach 函数的 done 内部进行渲染,实际上我做了所有这些事情来等待图像。但问题几乎一样,页面不渲染。
解决方案
我终于解决了它,但它不是小菜一碟....我必须承认我并不完全满意,我访问图像和展览结果只是因为我在创建它们时将它们推到选项卡中。我希望这是瀑布允许等待连接在瀑布末端创建之前自行生成,....这很奇怪,因为当我通过项目列表页面访问数据时,我的选项卡是连接的里面有所有的数据。它是同一个吸气剂。我必须做更多的工作才能找到一个真正好的解决方案。
这是我的瀑布:
async.waterfall([
function(callback) {
callback(null, creationsController.create(req, res, true))
},
function(creation, callback) {
creation.then(function(crea){
idCreation = crea.get('id');
callback(null, exhibitionController.create(req,res, idCreation, req.body.exhibitionName, req.body.galery, req.body.exhibitionBegin, req.body.exhibitionEnds))
})
},
function(exhibition, callback){
exhibition.then(function(exhi){
exhibitions = exhi;
callback(null, async.forEachOf(req.files, (value, key, callback) => {
images.push(value);
callback(null,
imagesController
.create(req, res, idCreation, req.files[key].filename, imageData[key].ext));
}))
})
},
function(images, callback) {
callback(null, creationsController.findThisCreation(req, res, idCreation))
}], function(err, creation) {
if(!err){
creation.then(function(result){
result.Images.push.apply(result.Images, images);
result.Exhibition.push.apply(result.Exhibition, exhibitions);
res.send(result);
})
}else{
res.send(err)
}
})
推荐阅读
- c - 自动化 C 程序的用户输入
- asp.net - 带有 OpenId Connect 和 Azure AD 的 ASPNET Core
- node.js - NodeJS/Express/Mongodb - 无法读取未定义的属性“集合”
- angularjs - 如何在列表上执行 Async forEach 并在每个项目上执行同步任务
- jquery - 使用 jQuery 进行 Bootstrap 4 卡片过滤
- javascript - 如何在我的 chrome 扩展中保存用户输入?
- c# - WPF MVVM 绑定问题/疑问
- python - Python列表比较生成无限循环
- java - 无法使用java从文件系统中删除文件
- vhosts - 在 CentOS 6 服务器上安装 Gitlab