javascript - 如何在 Express 中发送响应
问题描述
我正在使用 express 和 MongoDB,并且每当我的数据库中发生任何更改时都需要一些实时更新。我使用 MongoDB 更改流。但是,当我将更改功能放在路线内时,它只会在我到达路线时发送响应,而当我将更改功能放在路线之外时,我无法发送响应。
所以我的问题是当我的收藏发生任何变化时如何发送响应。
const testSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true },
});
const model = mongoose.model('test', testSchema);
//change
model.watch().on('change', (data) => {
console.log(data);
});
router.put('/update', async (req, res) => {
const data = req.body;
const info = await model.updateOne(data);
res.send(info);
});
解决方案
您要实现的目标依赖于Web socket。
套接字是使应用程序通过网络进行通信的方式。
您的浏览器使用套接字编程。它在 80 端口与服务器建立连接(仅用于 HTTP 请求),并从服务器获取数据并根据标记显示。
如果您曾经玩过任何在线游戏,例如反恐精英,您曾经是其中的主持人,那么您就会了解它的用法。您将自己建立为分配了特定端口以进行通信的主机。然后游戏使用该套接字将数据传递给其他计算机。
您必须学习和理解SocketIO才能实现这一目标。
大多数课程都在解释如何将其用于聊天应用程序。但是,如果您更好地理解它,您将能够在套接字上构建任何东西。
推荐阅读
- r - 根据 hcharter 中的给定序列设置热图颜色范围
- python - 管道几个熊猫数据框
- node.js - MongoDB 按 ID 分组,然后按日期分组
- ruby-on-rails - 如何通过 has_one 关系建立这个 has_many 关系?
- php - Laravel 使用集合过滤器和地图
- excel-formula - 如何使 Excel 显示空白而不是 0 作为值
- continuous-integration - 在 VSTS CI/CD 中的 dotnet 构建期间出现错误:rzc generate exited with code 1
- javascript - 将 javascript 闭包变成咖喱函数
- cmake - 需要从库子目录复制一个 DLL 以使用 CMake 测试子目录
- dynamics-crm - 如何选择 Dynamics 365 的裸配置?