我正在尝试使用MEAN堆栈实现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,但返回空白文档。 我没有得到任何人的帮助,请帮助。 在此先感谢!
答案 0 :(得分:0)
您使用了错误的参数
将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)); }
});
答案 1 :(得分:0)
尝试一下。另一种可能的情况是,req.params字符串格式的_id代替了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));
}
});
答案 2 :(得分:-1)
findById的语法无效
使用findByID的正确语法是
Adventure.findById(id, function (err, adventure) {});
您还可以以此将findById替换为findOne
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