【发布时间】:2018-09-15 21:49:52
【问题描述】:
我试图找到这个,但我找不到可以回答我疑问的解决方案。
我有一个虚拟猫鼬属性定义为:
postSchema.virtual('permissions').get() => {
});
我想要实现的是用用户对每个帖子的权限列表填充字符串数组类型的权限属性。这个逻辑是通过所有者用户 id 派生的,该用户 id 存储在 post mongo 数据库中,并且用户 id 存在于 express 的请求对象中,该用户 id 来自请求者。
但是,我意识到请求对象对虚拟方法不可用:
postSchema.virtual('permissions').get((req) => {
// req is null.
});
现在,我确实有一个解决方案来解决这个问题,方法是让查找结果倾向于服务级别。
app.get('/api/posts', (req, res) => {
PostModel.find({}, '-fbEmailAddress', { sort: { created_at: -1 } }).lean().exec(function (err, posts) {
posts.array.forEach(element => {
element.permissions = // write your permission logic here
});
res.send(posts);
});
});
但是,如果我这样做,它不会停止调用 .我还定义的任何虚拟属性。我失去了将名字、姓氏操纵为全名等的机会。人。
你们有什么建议可以以最好的方式解决这个问题,以便我可以访问请求对象中的当前用户 ID?
请注意,它是一个 API,所以我不想介绍任何类型的会话对象。
干杯
【问题讨论】:
-
有人可以帮我吗?
标签: javascript node.js mongodb mongoose mongoose-schema