我正在构建一个检索文章的api。我的数据库中也有用户,并且希望有一个返回用户的端点。 /api/users/:userid
。这将返回以下内容:
{
"articles": [], //array w. references to articles the user has written
"_id": "5b1321321bcda0e3364251d7e4a",
"email": "user@email.com",
"password": "$2a$1231241gi14k41k42bk12bh3k127iP/k1LAqwPdbgF/bXXpRia",
"__v": 0
}
-但是,我不确定在API中返回(加密的)密码是否是个好主意。我可以以某种方式排除此字段,还是建议您将电子邮件+ user_ids存储在mongodb上的单独集合中,或者通常如何处理这种情况?
答案 0 :(得分:1)
您可以使用Project Fields to Return from Query
从响应中排除密码字段。
db.users.find( { email: "user@email.com" }, { password: 0} )
答案 1 :(得分:0)
好的,最好不要返回用户的password
。我通常要做的是使用lodash
库进行类似这样的操作,例如,您可以拥有一个实用程序函数,该函数会在API返回这样的响应之前忽略密码字段
function omitPassword(user) {
return _.omit(user.toObject(), ['password']);
}
基本上_.omit
是lodash的方法。希望这对您的需求有所帮助。