【发布时间】:2019-07-15 00:55:19
【问题描述】:
我正在尝试使用 MEAN 堆栈实现 CRUD 操作。我在通过 ID 获取用户时遇到问题。它显示状态为真,但它返回一个空文档。
这是我的模型:
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);
在检查邮递员时,我得到了 status: true 但它返回一个空白文档。 我不知道发生了什么事请任何人帮忙。 提前致谢!!
【问题讨论】:
-
_id类型可能有问题?在数据库上它(我认为)是一个ObjectId,但您为findById函数提供了一个String? -
但它以前工作过。有没有其他方法。我想通过 id 获取用户。
-
我会尝试使用
User.findById(ObjectID.createFromHexString(req.params.id)),以消除对类型转换问题的任何疑问... -
我试过不行。
-
您可以尝试在
if语句之前添加console.log(err, user)吗?
标签: node.js mongoose mongodb-query mongoose-schema