Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为两个集合设置passport jwt策略_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 为两个集合设置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) }

我有一个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)
    }

    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)
            }
        })
    }
  })
})

你说这里是什么意思?管理员还是用户?是的,在两个集合中你是否尝试过我的答案,它是否对你有效?正在进行中的工作给我更多的时间检查所有内容,老实说,我正在考虑与你的答案中相同的代码,但只是好奇是否有更合适的内容没有其他方法可以通过一个查询检查多个集合。