2015-05-09 128 views
2

我已经创建了一个使用Nodejs的小型快递服务器,目前我能够处理单个发布请求 - 检查用户是否存在。Nodejs - 多个发布请求

我需要包含一个额外的帖子请求,这将允许我注册一个新用户。注册请求来自包含标准注册表单的单独的HTML页面。

鉴于我见过的后头部的例子都是一样的:

app.post('/', function (req, res) 

我怎样才能在请求之间区分?

我的代码:

var express = require('express'); 
var bodyParser = require('body-parser'); 
var mysql = require('mysql'); 

var connection = mysql.createConnection({ 
    host: '127.0.0.1', 
    user: 'root', 
    password: '12345678', 
    database: 'project_eclipse', 
    port: 3306 
}); 

connection.connect(function (err) { 
    if (!err) { 
     console.log("Database is connected ... \n\n"); 
    } else { 
     console.log("Error connecting database ... \n\n"); 
    } 
}); 

var app = express(); 


// instruct the app to use the `bodyParser()` middleware for all routes 

app.use(bodyParser()); 
app.use(express.static(__dirname + '/public')); 

app.post('/', function (request, response) { 

    console.log('searching for user: ', request.body.usr); 
    //console.log(request.body.pass); 
    var usr = request.body.usr; 
    var pass = request.body.pass; 

    connection.query('SELECT * FROM eclipse_users WHERE username=? AND password = md5(?)', [usr, pass], function (err, rows, fields) { 

     if (!err) { 
      //console.log('The solution is: ', rows); 
      var n_rows = rows.length; 
      console.log('number of rows returned: ', n_rows); 
      if (n_rows == 1) response.json({ 
       msg: 'user exists' 
      }); 
      else response.json({ 
       msg: 'user does not exist' 
      }); 
     } else { 
      console.log('Error while performing Query.'); 
      connection.end(); 
     } 
    }); 
}); 

app.listen(80, "127.0.0.1"); 
console.log('Server running at http://127.0.0.1:80/'); 

回答

1

一种方式来做到这一点是:

app.post('/:register', function(request, response){ 
    console.log('registering user: ',request.body.usr); 
} 

并已通过注册旗号而呼吁的文章。

然而,你的代码来检查用户的合法性是更好,如果你使用app.get:

app.get('/', function(...)) {...} 

这样你可以有不为登记部分寄存器变量的app.post。

+0

所以你的意思更改用户有效性('/',函数(请求,响应) 并使用 app.post('/',函数(请求,响应) 用于注册? 我会尽力... –

+1

是的。经验法则是:如果仅读取数据,请使用get。如果数据被插入/更新,请使用信息。 –

+0

谢谢!你帮了我很多。 –

1

变1,另一个网址:

app.post('/registration', function (req, res) { 
    // ... 
}); 

变2,参数动作:

app.post('/:action', function (req, res) { 
    if (req.param('action') === 'registration') { 
     // ... 
    } 
}); 

变3,行动,通过邮寄:

app.post('/', function (req, res) { 
    if (req.param('action') === 'registration') { 
     // ... 
    } 
}); 
+0

谢谢!你帮了我很多。 –