2015-05-20 2 views
1

Сейчас я пытаюсь создать сервер, чтобы иметь возможность регистрировать пользователей. Однако сервер не реагирует при попытке зарегистрироваться с использованием/reg. Когда я создаю новый .get, он отвечает, так что сам сервер работает.Сервер, не отвечающий на url с параметрами

Для меня также непонятно, как правильно форматировать URL.

app.post('/reg/:uname/:teamid', function(req, res){ 
    var username = req.params.uname; 
    var teamidpar = req.params.teamid; 

    UserSchema.pre('save', function (next) { 
    this1 = this; 

    UserModel.find({uname : this1.username}, function(err, docs) { 
     if (!docs.length) { 
      //Username already exists 
     } else { 
      var loginid = randomstring.generate(); 
      var newUser = User({ 
       uname : username, 
       teamid : teamidpar, 
       totalscore : 0, 
       lastopponement : null, 
       gamescore : 0, 
      }); 

      User.save(function (err, User, next) { 
       if (err) {return console.error(err);} 
       else 
       {console.log(timestamp+':'+'User created:'+newUser.uname+':'+newUser.login);} 
       res.json({login : loginid}); 
      }); 
     } 
     }); 
    }); 
}); 
+0

Существует опечатка, из-за 'функции (REQ, Рез)' это '' req.params.uname' и req.params.teamid' – vanadium23

+0

Ах, спасибо. Я отредактировал это. Однако теперь использование GET не загружает страницу, а что-либо еще отвечает с помощью Can not. Он также не регистрирует новые записи, поэтому я предполагаю, что он не использует эту информацию. – TheElderTrolls

+0

Просто так, что я уверен, но вы знаете, что вы не можете просто перейти к правилу '/ reg', так как он всегда требует заданных параметров? Поэтому он может работать только с '/ reg/someuser/teamid'. –

ответ

0

Я не знаю, почему я не видел этого раньше, но вы используете UserSchema.pre в самом начале, однако это просто определение и не будет исполнен немедленно. Только когда вы на самом деле сделаете save на документе, эта функция будет запущена.

Под правильной, отредактированной версией.

app.post('/reg/:uname/:teamid', function(req, res) { 
    var username = req.params.uname; 
    var teamidpar = req.params.teamid; 

    // If you are just checking if something exist, then try count 
    // as that has minimal impact on the server 
    UserModel.count({uname : username}, function(err, count) { 
    if (count > 0) { 
     // Username already exists, but always output something as we 
     // don't want the client to wait forever 
     return res.send(500); 
    } 

    var loginid = randomstring.generate(); 

    // You'll need a new instance of UserModel to define a new document 
    var newUser = new UserModel({ 
     uname : username, 
     teamid : teamidpar, 
     totalscore : 0, 
     lastopponement : null, 
     gamescore : 0, 
    }); 

    // Save the document by calling the save method on the document 
    // itself 
    newUser.save(function (err) { 
     if (err) { 
     console.error(err); 

     // You'll want to output some stuff, otherwise the client keeps on waiting 
     return res.send(500); 
     } 

     console.log(timestamp + ': User created:' + username + ':' + loginid); 
     res.json({login : loginid}); 
    }); 
    }); 
}); 
Смежные вопросы