Node.js NodeJs Mongoose findById返回状态为true的空文档

Node.js NodeJs Mongoose findById返回状态为true的空文档,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我正在尝试使用平均堆栈实现CRUD操作。我在按Id获取用户时遇到问题。它显示的状态为true,但返回的是空文档 这是我的模型: const userSchema = new mongoose.Schema({ fullName: { type: String, required: 'Full name can\'t be empty ' }, userName: { type: String, require

我正在尝试使用平均堆栈实现CRUD操作。我在按Id获取用户时遇到问题。它显示的状态为true,但返回的是空文档

这是我的模型:

const userSchema = new mongoose.Schema({
    fullName: {
        type: String,
        required: 'Full name can\'t be empty '
    },
    userName: {
        type: String,
        required: 'user name can\'t be empty ',
        unique: true
    },
    email: {
        type: String,
        required: 'email can\'t be empty ',
        unique: true
    });

mongoose.model('User', userSchema);
在我的控制器中:

const mongoose = require('mongoose');
const passport = require('passport');
var ObjectId = require('mongoose').Types.ObjectId;
const User = mongoose.model('User');

module.exports.getuser = (req, res, next) => {
    if(!ObjectId.isValid(req.params.id))
        return res.status(400).send(`No record with given id : ${req.params.id}`);

    User.findById(req.params.id, (err, user) => {
        if(!err){ res.status(200).json({status: true, user}); }
        else{ console.log('Error in retriving User :' + JSON.stringify(err, undefined, 2)); }
    });    
}
这是路线:

router.get('/:id', jwtHelper.verifyJwtToken, ctrlUser.getuser);
在签入邮递员时,我得到的状态是:true,但它返回一个空白文档。 我不明白发生了什么任何人请帮忙。
提前谢谢

您使用了错误的参数

req.params.id
替换
req.params.id
,如下所示:

User.findById( req.params.id, (err, user) => {
        if(!err){ res.status(200).json({status: true, user}); }
        else{ console.log('Error in retriving User :' + JSON.stringify(err, undefined, 2)); }
    });    

findById的语法无效

使用findByID的正确语法是

Adventure.findById(id, function (err, adventure) {});
你也可以用findOne替换findById

User.findOne({_id: req.params.id}, (err, user) => {
        if(!err){ res.status(200).json({status: true, user}); }
        else{ console.log('Error in retriving User :' + JSON.stringify(err, undefined, 2)); }
    }); 
或者你也可以用这个

  User.findById(req.params.id, (err, user) => {
            if(!err){ res.status(200).json({status: true, user}); }
            else{ console.log('Error in retriving User :' + JSON.stringify(err, undefined, 2)); }
        }); 

希望@sun对你有用试试这个。另一种可能的情况是_id采用req.params字符串格式,而不是ObjectId

var id = mongoose.Types.ObjectId(req.params.id);
User.findById(id, (err, user) => {
    if(!err) { 
        res.status(200).json({status: true, user}); 
    }else {
        console.log('Error in retriving User :' + JSON.stringify(err, undefined, 2));
    }
});

我尝试了其他答案,所以我使用了“_id”,它不起作用。我尝试了使用这两种方案,但它没有返回任何文档@Vivek Ghanchi我想你有空数据可供查找。请检查我插入了一些记录。剩余的curd操作工作正常,如删除和插入检索所有用户,但在通过“id”获取用户时工作不正常。