【发布时间】:2016-07-02 11:32:36
【问题描述】:
我是 Node.js 的新手,我正在努力处理异步调用。
在下面的代码中,我有一个提要数组,例如 (1,2,3..)。每个提要可以包含多个图像,现在我想从文件夹和数据库中删除图像。
到目前为止我做了什么:
for(var i=0; i<feedArr.length; i++){
var feedId = feedArr[i].feedid;
var listFeedImageQuery = "select imageUrl from feedImages where feedId='"+feedId+"'";
var deleteFeedImagesQuery = "delete from feedImages where feedId='"+feedId+"'";
model.client.query(listFeedImageQuery,function(err,result){
if(result.rows.length > 0){
for(var j=0; j<result.rows.length; j++){
fs.unlink(result.rows[j].imageurl, function(err) {
if(err)
console.log(err);
});
}
model.client.query(deleteFeedImagesQuery,function(err,result){
if(err)
console.log(err)
else
console.log(feedId +' were removed'); // last feedId only gets removing from database
});
}
});
}
在这里,我可以从图像存储文件夹中删除图像,但无法从数据库中删除记录。只有最后一个提要记录被删除。其余的 feedImage 记录在数据库中。
我研究了一些关于异步模块的东西,但我不知道如何将它应用到这个问题上。
【问题讨论】:
-
你知道它只有一个线程循环处理,不是吗。你到底为什么要写同步函数。
-
是的,我知道,但在某些情况下它令人沮丧,你知道如何解决这个问题吗?
标签: node.js express asynchronous