【发布时间】:2018-06-21 22:51:41
【问题描述】:
在我的网站上,我目前使用 Angular / NodeJs/ 和一个 SQL 数据库。在该站点上,我从站点向 NodeJs 到数据库进行了很多调用,并且工作正常。但是,当我运行一个需要很长时间来处理的存储过程时,我会在控制台中返回以下内容:
POST /job_bbb - - ms - -
根据我在 Google 上看到的情况,这是因为没有回复。
关于如何解决这个问题的任何想法?任何帮助将不胜感激。
对我的服务的 Angular 调用:
this.teradataService.getBBB(this.id).subscribe(bbbresults => this.bbbresults = bbbresults,
error => console.log('ERROR!'),
() => {
});
服务 HTTP POST:
getBBB(id): Observable<[BBBResult]> {
const url = 'http://localhost:3000/job_bbb';
const data = ({
id: id
});
return this._http.post(url, data)
.pipe(
map((res) => {
console.log(res);
return <[BBBResult]> res;
})
);
}
Nodejs
router.post('/job_bbb', function (req, res) {
var id = req.body.id;
var sql = "CALL Stored Proecedure Here;";
console.log(sql);
return database.read(sql)
.then((x) => {
console.log(x)
res.send(x);
})
});
【问题讨论】:
-
Node.js 中的 console.log 是否被打印出来?如果您从命令行(即不是从 Node)运行存储的 proc,执行需要多长时间?
-
console.log(sql) 会被打印,console.log(x) 不会。大约需要 5 分钟才能完成。同样的过程在过去按预期工作,但现在需要更长的时间,我收到了这个 POST 问题。
-
如果需要 5 分钟才能完成,我并不惊讶它会超时...您的意思是
console.log(x)没有打印,即使在 5 分钟之后?有什么办法可以加快执行速度吗? -
它永远不会返回,我相信我收到了 POST - - ms - - 因为由于超时,POST 永远不会得到响应。存储过程在数据库端正常工作,但在它完成响应通过 Nodejs 之前认为它已经超时。没有办法加快执行速度。我觉得必须有一种方法让它等待更长时间,但我对 Nodejs/Angular 非常缺乏经验。
标签: javascript node.js angular http