繁体   English   中英

可同时处理查询和参数的NodeJs Express app.get

[英]NodeJs Express app.get that handles both query and params

我正在尝试创建REST服务。 下面的路由将执行一个存储过程,该过程将返回json结果

app.get('/spparam', function (req, res) {
var sql = require("mssql");

// config for your database
var id=0;
var config = {
    user: 'username',
    password: 'password',
    server: 'hostname', 
    database: 'databasename' 
};
// connect to your database
sql.connect(config, function (err) {

    if (err) console.log(err);

    // create Request object
    var request = new sql.Request();

    if(!mylib.isEmptyObject(req.query)){
        id=req.query.id;
    }else if(!mylib.isEmptyObject(req.params)){
        id=req.params["id"];
    }
    // Executing Stored Prcoedure       
    request.input('requestid', sql.Int, id)
        .execute("Request_Get_ById").then(function(recordSet) {
            //console.dir(recordsets);
            //console.dir(err);
            res.send(recordSet);
            sql.close();
        }).catch(function(err) {
            console.log(err);
        });
    });
});

我想通过创建一个处理查询(/ spparam?id = 1)和参数(/ spparam /:id /)的路由来最小化代码。 这可能吗? 有没有更好的方式来处理我需要的东西?

是的,您可以使用Express来做到这一点,例如:

app.get('/spparam/:id?', function (req, res) {
  const id = req.params.id || req.query.id;
  // the rest of your function, and use id without caring about whether
  // it came from params or query
  // change order if you want to give preference to query
}

Express.js文档说它使用路径到正则表达式进行路由匹配。 在那里,您可以看到以下报价:

可以在参数后加上问号(?),以使参数可选。

在javascript中,构造var a = b || c 如果b不是false-yvar a = b || c会将b的值分配给a ;否则,它将c的值分配给a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM