如何更新更改的用户数据,在多个浏览器登录
我存储蒙戈收集用户会话,使用快递会话中间件。
这是最好的方式,当从其中一人进行变更,更新所有用户会话。
例如,如果用户从会话中的变化的电子邮件,我立刻更新它。但变化并不适用于其他地区。
为了清楚起见:浏览器1 - 用户改变浏览器的电子邮件2 - 刷新页面,仍然得到旧数据
app.get('/change-email', async (req, res, next) => {
const userData = await User.findOneAndUpdate({ _id: req.session.user.id }, {
$set: {
email: req.body.email,
},
}, {
new: true,
});
req.session.user = {
id: userData._id,
email: userData.email,
username: userData.username,
name: userData.name,
};
});
我期望从会议一执行的变化,将分发到用户会话的其余部分。
作为解决问题的方法之一,我认为搜索所有用户会话,并帮助他们了解每个用户的数据(电子邮件,用户名,姓名等)的变化。
回答如下:您可以在客户端使用EventSource()
到数据流从服务器浏览器。
在服务器发送一个或多个消息具有MIME
型"text/event-stream"
客户。例如,看到How to read and echo file size of uploaded file being written at server in real time without blocking at both server and client?。