Node.js NodeJs Mongoose findById返回状态为true的空文档
我正在尝试使用平均堆栈实现CRUD操作。我在按Id获取用户时遇到问题。它显示的状态为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
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”获取用户时工作不正常。