我使用node.js + express + mongodb + mongoose,尝试通过自定义ID从数据库中检索用户,由于id值的数据类型不正确,页面返回完全为空,这是我的代码的一部分:
var User = new Schema({
name: String ,
email: String ,
id: Number,
role: String
});
var userModel = mongoose.model('User', User);
var person = new userModel();
function loaduser(req, res, next) {
userModel.find({}, req.params.id, function(err, user){
if (user){
req.user = user;
console.log(user);
next();
}
})
console.log(typeof req.params.id);
};
//personal page route
app.get('/user/:id', loaduser, function(req, res){
res.render('show', { users: req.user });
});
然后在控制台中返回:
string
{ _id: 5012aa222c2d4d5876c5acd0,
email: 'alex@mail.com',
id: '0',
name: 'alex',
role: 'admin' },
即使我将id的类型声明为 Number ,它也会返回 String 。 欢迎任何建议:)
答案 0 :(得分:0)
req.params.id
似乎错了
userModel.find({}, req.params.id, function(err, user){
应该是
userModel.find({}, { id: parseInt(req.params.id) }, function(err, user){
答案 1 :(得分:0)
您的find
电话不太正确。第一个参数应该是您的查询文档,因为您正在查找一个文档,所以您应该使用findOne
。您还需要将req.params.id
转换为数字:
userModel.findOne({ id: Number(req.params.id) }, function(err, user){
如果你仍然看到id
以字符串形式返回时出现问题,那么它必须是集合中的字符串。