【发布时间】:2018-09-20 12:41:07
【问题描述】:
我有一个 API POST 路由,我从客户端接收数据并将数据上传到另一个服务。此上传是在发布请求(异步)内部完成的,需要一段时间。客户想知道在异步(创建项目功能)完成之前收到他们的 post req。如何在不结束 POST 的情况下发送? (res.send 停止,res.write 不发送出去)
我考虑过在这个 POST 路由被命中后立即向他们的服务器发送一个 http 请求。 . .
app.post('/v0/projects', function postProjects(req, res, next) {
console.log('POST notice to me');
// *** HERE, I want to send client message
// This is the async function
createProject(req.body, function (projectResponse) {
projectResponse.on('data', function (data) {
parseString(data.toString('ascii'), function (err, result) {
res.message = result;
});
});
projectResponse.on('end', function () {
if (res.message.error) {
console.log('MY ERROR: ' + JSON.stringify(res.message.error));
next(new Error(res));
} else {
// *** HERE is where they finally receive a message
res.status(200).send(res.message);
}
});
projectResponse.on('error', function (err) {
res.status(500).send(err.message);
});
});
});
内部系统要求在 POST 请求中调用这个 createProject 函数(需要存在并上传一些内容,否则不存在)——否则我稍后会调用它。
谢谢!
【问题讨论】:
标签: node.js express asynchronous post