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 中测试一直提示:
Header 测试使用最新的 token:
请求一次在终端中返回请求的数据:
我是一枚新手,在网上也查不到类似的问题,数据明明存在,为什么会一直提示用户不存在呢?是我哪里写错了吗?求指点,谢谢!
req.user.id 打印出来看看?