mongoose如何给一个对象添加对应Schema中没有的字段-->利用_doc

mongoose如何给一个对象添加对应Schema中没有的字段-->利用_doc

一、问题描述

最近学习nodejs,用express+mongodb+mongoose去搭建后台api接口,但是遇到了一个问题。当登录的时候,我想判断得到用户的相关权限,以便根据权限展示对应的菜单。

我的思路是这样的,首先获取前台传过来的username和password,后台验证之后,如果当前登录用户有role_id这个属性,那么就根据这个属性,去roles集合中查找对应的角色信息(这里设置超级管理员admin没有role._id,其他用户都有),查找到之后,将这些角色信息添加到user对象中。

注意:user表中没有role这个字段
看一下错误的代码

在这里插入图片描述
注意红色框中的代码,我本来想着,直接给这个对象添加一个role属性,并且将获取到的角色的相关信息添加到user.role中,但是结果发现根本添加不进去。

二、问题原因

那么为什么添加不进去了?
我想到mongoose,对于不符合Schema的字段的操作是不起作用的,但同时造成了一定的局限性。比如当查询出来的User有不同的属性,他可能是管理员,黑名单成员,这时候我们需要给他添加一个role字段来表示他的角色再返回给前端,但是数据库表中并不需要这个字段,因为他储存在不同的表中,这时候我们要怎么才能给他加字段然后返回呢?

三、问题解决

既然mongoose不能直接操作schema中没有的字段,那么像实现上面的功能,它肯定底层有封装,所以就打印一下获取到的user对象的所有键值名
在这里插入图片描述
如上图,我打印一下,然后看一下结果
在这里插入图片描述
注意_doc

_doc应该就是用来储存数据的

修改后的代码
在这里插入图片描述
这样操作就没问题了

猜你喜欢

转载自blog.csdn.net/qq_41880073/article/details/123011732
今日推荐