Node.js 为两个集合设置passport jwt策略
我有一个API,它有两个集合-管理员和用户。目前,我的passport JWT策略是:Node.js 为两个集合设置passport jwt策略,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个API,它有两个集合-管理员和用户。目前,我的passport JWT策略是: const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => { console.log(jwtPayload) User.findById(jwtPayload.sub, (err, user) => { if (err) { return done(err, null) }
const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => {
console.log(jwtPayload)
User.findById(jwtPayload.sub, (err, user) => {
if (err) {
return done(err, null)
}
if (user) {
return done(null, user)
} else {
return done(null, false)
}
})
})
但是,这只适用于用户,因为findById是在用户上完成的。我需要类似于
findById here或here()
的东西。如何将这两者结合起来?您可以检查用户
是否存在于用户
集合中,如果不存在,则可以在管理员
集合中检查该用户
试试这个:
const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => {
console.log(jwtPayload)
User.findById(jwtPayload.sub, (err, user) => {
if (err) {
return done(err, null)
}
if (user) {
return done(null, user)
} else {
//search in Admin collection
Admin.findById(jwtPayload.sub,(err,admin) => {
if(err){
return done(err,null)
}
if(admin){
return done(null,admin)
}else{
return done(null, false)
}
})
}
})
})
你说这里是什么意思?管理员还是用户?是的,在两个集合中你是否尝试过我的答案,它是否对你有效?正在进行中的工作给我更多的时间检查所有内容,老实说,我正在考虑与你的答案中相同的代码,但只是好奇是否有更合适的内容没有其他方法可以通过一个查询检查多个集合。