mongodb 表关联并查询,为什么一直提示该用户不存在?

mongodb 中的两个表,一个是users,另一个叫userDetails。现在要做的事情是,根据 userId 查询对应的 用户详情,查询是在 userDetails 中进行操作的。
测试过,表中的数据确实存在,也能登录成功,也能返回 token 。就是在根据id查询时,mongodb 终端可以显示已经查询到的用户并返回一个对象,但是在 postman 中测试不过。

 const mongoose = require('mongoose');
 const Schema = mongoose.Schema;
 const UserDetailsSchema = new Schema({
    userId:{
        type: Schema.Types.objectId,
        ref:'users'
    },
    company:{
        type:String
    },
    website:{
        type:String
    }
 })
const UserDetailsSchema = require('../../models/UserDetails');
const passportUser = passport.authenticate('jwt',{ session: false });

router.get('/getUser',passportUser,(req,res) => {
    const errors = {};
    UserDetailsSchema .findOne({user:req.user.id}).then((user) => {
        if(!user){
            errors.noProfile = '该用户不存在!';
            return res.status(404).json(errors);
        }
        //如果存在,则返回
        res.json(user);
    }).catch(err => {
        res.json(err)
    });
});

pastman 中测试一直提示:

clipboard.png

Header 测试使用最新的 token:

clipboard.png

请求一次在终端中返回请求的数据:

clipboard.png

我是一枚新手,在网上也查不到类似的问题,数据明明存在,为什么会一直提示用户不存在呢?是我哪里写错了吗?求指点,谢谢!

阅读 2.3k
2 个回答

req.user.id 打印出来看看?

是根据userId而不是user查询吧:

UserDetailsSchema.findOne({userId: req.user.id})...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题