0

我使用 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。欢迎任何建议:)

4

2 回答 2

0

req.params.id似乎是错误的

userModel.find({}, req.params.id, function(err, user){


它应该是

userModel.find({}, { id: parseInt(req.params.id) }, function(err, user){

于 2012-07-28T18:04:08.360 回答
0

你的find电话不太对劲。第一个参数应该是您的查询文档,因为您正在寻找一个文档,所以您应该使用它findOne。您还需要转换req.params.id为数字:

userModel.findOne({ id: Number(req.params.id) }, function(err, user){

如果您仍然看到以id字符串形式返回的问题,那么它一定是集合中的字符串。

于 2012-07-28T18:26:12.363 回答