在 Express.js 中发送响应后如何做某事?
How to do something after sending a response in Express.js?
我正在开发一个网络应用程序,用户可以 post 一个线程,为此有 2 个步骤:一个是将线程保存到线程集合,一个是将线程 ID 保存到用户集合。
但是,保存到线程集合后,我想立即发送响应,而不是等待其他保存操作完成。
是否有任何推荐的解决方案,通过使用 express.js 或节点本身而不使用其他任务队列类型的库?
我可以只触发一个事件然后发送响应吗?无论请求是否已经完成,事件侦听器是否会继续 运行?
谢谢
您可以在线程创建之后和线程 ID 的用户数据更新之前发送响应。
下面是伪代码:
var express = require('express');
var app = express();
app.post('/', function(req, res, next) {
threadCreationRequest(function(err, data) {
res.send(data);
userUpdateRequest();
});
}
在将其保存到线程集合之前创建线程 ID。
您可以使用 uuid or if you are using MongoDB you could create an ObjectId using mongoose(或找到另一种创建唯一 ID 的方法)。
const uuidV1 = require('uuid/v1');
...
function saveThread(req,res){
const threadId=uuidV1(); // -> 6c84fb90-12c4-11e1-840d-7b25c5ee775a
let thread=req.body;
thread.id=threadId;
saveThread();
//return response (res.status(200).json(newThreadObject))
saveThreadId();
}
我正在开发一个网络应用程序,用户可以 post 一个线程,为此有 2 个步骤:一个是将线程保存到线程集合,一个是将线程 ID 保存到用户集合。
但是,保存到线程集合后,我想立即发送响应,而不是等待其他保存操作完成。
是否有任何推荐的解决方案,通过使用 express.js 或节点本身而不使用其他任务队列类型的库?
我可以只触发一个事件然后发送响应吗?无论请求是否已经完成,事件侦听器是否会继续 运行?
谢谢
您可以在线程创建之后和线程 ID 的用户数据更新之前发送响应。
下面是伪代码:
var express = require('express');
var app = express();
app.post('/', function(req, res, next) {
threadCreationRequest(function(err, data) {
res.send(data);
userUpdateRequest();
});
}
在将其保存到线程集合之前创建线程 ID。 您可以使用 uuid or if you are using MongoDB you could create an ObjectId using mongoose(或找到另一种创建唯一 ID 的方法)。
const uuidV1 = require('uuid/v1');
...
function saveThread(req,res){
const threadId=uuidV1(); // -> 6c84fb90-12c4-11e1-840d-7b25c5ee775a
let thread=req.body;
thread.id=threadId;
saveThread();
//return response (res.status(200).json(newThreadObject))
saveThreadId();
}