【发布时间】:2014-03-04 09:26:23
【问题描述】:
我正在使用 nodejs、express、mongoose 和 passport 进行身份验证。
我有一个名为 User 的猫鼬模型,它包含用户数据(大量数据)。
不,我想创建一个渲染 index.jade 的路由并在模板中设置用户数据。
我的路线是:
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};
我有以下两个问题:
我不希望客户端获得整个用户结构。我只需要几个属性,仅此而已。我从 Java 和 .NET 知道有术语“数据传输对象”表示一个对象,其目的是将数据传递给客户端。节点中的等价物是什么?仅向客户端传递相关数据的节点的最佳实践是什么?
客户端需要用户 ID 来识别用户。我不想传递 mongo 原始用户文档 _id。我能做些什么?我是否需要以某种方式对 id 进行编码?
【问题讨论】:
-
如果您查看 mongoose findOne 文档,您可以看到该调用带有一个可选的第二个参数,该参数列出了您想要的字段。您可以在 LocalStrategy 中使用它来限制返回对象中的字段数。例如
User.findOne({ username: username }, "username user_id", function (err, user) { ... -
@jimoleary:这不是 mongoose 层来决定我需要哪些数据。这个数据选择只与表示层有关,我知道我将把数据传递给谁。
-
谁没看懂问题给我-1?
标签: javascript node.js mongodb express mongoose