将用户数据传递给客户端
passing user data to the client
我使用nodejs, express, mongoose和passport进行认证。
我有一个名为User的猫鼬模型,它保存用户数据(大量数据)。
不,我想创建一个路由来呈现index。并在模板中设置用户数据。
我的路线是:
app.get('/something', function(req, res) {
res.render('index', {
user: req.user || {}
});
});
我的模板:doctype 5
html(lang="en")
head
body
script(type='text/javascript')
window.user = #{user};
我对以下内容有两个问题:
我不希望客户端获得整个User结构。我只需要几个属性,仅此而已。我从Java和。net中知道有一个术语"数据传输对象",它表示一个对象的目的是将数据传递给客户端。在节点上等价的是什么?只向客户端传递相关数据的最佳实践是什么?
客户端需要用户id来识别用户。我不想传递mongo原始用户文档_id。我能做什么?我是否需要以某种方式编码id ?
当你做res.render
时,你实际上不发送任何从变量到你的客户端,除了你在模板中使用的变量,所以基本上如果你想传递你的用户的用户名,你可以安全地做(DRY改进):
render = function(page, req, res) {
res.render(page, { user: req.user ? req.user : {} });
};
app.get('/something', function(req, res) { render('index', req, res); });
app.get('/pageA', function(req, res) { render('pageA', req, res); });
app.get('/pageB', function(req, res) { render('pageB', req, res); });
或
doctype 5
html(lang="en")
head
body
script(type='text/javascript')
| window.user = "#{user.username}";
如果你想要更复杂的用户对象,你可以这样做:
doctype 5
html(lang="en")
head
body
script(type='text/javascript')
| window.user = { username: "#{user.username}", email: "#{user.email}" };
基本上这不会将你的user
对象暴露给客户端,只是暴露给你的节点查看器实例的渲染函数。
关于用户id,您可以使用任何其他唯一的用户属性,如用户名,电子邮件地址等
您可以序列化对象以便在客户端使用
doctype 5
html(lang="en")
head
body
script(type='text/javascript')
window.user = !={JSON.stringify(user)};
你也可以在服务器上序列化
app.get('/something', function(req, res) {
res.render('index', {
user: JSON.stringify(req.user || {})
});
});
然后在视图中赋值
script(type='text/javascript')
window.user = =#{user};
相关文章:
- 客户端数据存储
- 使用sturts2进行客户端数据清理和分析
- 如何使用Dojo Store进行客户端数据缓存
- 存储临时客户端数据
- 节点.js,Websocket 服务器端客户端数据
- 在 Flask 中将客户端数据传输到服务器端
- 客户端数据不会传递到服务器
- 如何使用客户端数据更新jQuery.dataTables中的所有数据
- 客户端数据结构的JavaScript加密(或模糊处理)
- 使用大型客户端数据初始化JavaScript应用程序
- 级联Telerik组合框在客户端数据绑定后记住选定的值
- 如何启动客户端数据的文件下载并指定其文件名?
- 将客户端数据传递给服务器端方法
- 将客户端数据发送到另一台计算机
- 检查Socket.IO中特定房间中存储的客户端数据
- 重新绘制/更新客户端数据的Meteor.js事件
- 使用nodejs tcp server接收客户端数据
- 可数据的客户端数据更改/重绘
- 如何在Meteor中重定向到外部URL并收集客户端数据
- 当我们使用301重定向时如何收集客户端数据