如何使用 2 参数路由获取 node.js

how to use 2 parameter route get node.js

如何在 1 个路由中使用 2 个参数(获取)这是我的代码

router.get('/', function (request, response) {
        Result.find(function(error, results){
        if (error) console.log(error)

        response.render('index', {results:results})
      })
    })

router.get('/', function (request, response) {
        Result.count({stuff:"book"}, function(error, count){
        if(error) console.log(error)

        response.render('index', {count})
      })
    })

我试过这样组合,但出现错误

router.get('/', function (request, response, next) {
        Result.find(function(error, results){
        if (error) console.log(error)

        response.render('index', {results:results})
      }),
        Result.count( {stuff:"book"}, function(error, count){
        if(error) console.log(error)

        response.render('index', {count})
      })
    })

#注意: 如果我使用其中之一是 运行 完美(没有错误),但我需要 2 个参数..

要将这两条数据发送到您的模板,您必须在一个路由处理程序中收集这两条数据,然后用这两条数据调用一次 res.render()

您只能为传入请求发送一个响应,因此如果您想使用多条数据呈现模板,那么您可以收集所有这些数据并调用 res.render() 一次,将所有数据传递给它它需要并且您的模板应该配置为期望所有数据立即传递给它:

// use database callbacks and nest the two calls
router.get('/', function(request, response, next) {
    Result.find(function(error, results) {
        if (error) {
            console.log(error)
            response.sendStatus(500);
            return;
        }
        Result.count({ stuff: "book" }, function(error, count) {
            if (error) {
                console.log(error)
                response.sendStatus(500);
                return;
            }
            response.render('index', { count, results });
        });
    });
});

或者,在您的数据库上使用 promise 接口(我假设它有):

// using Promises and Promise.all() to run both queries in parallel
router.get('/', function(request, response, next) {
    Promise.all([Result.find(), Result.count({ stuff: "book" })]).then(([results, count]) => {
        response.render('index', { count, results });
    }).catch(err => {
        console.log(error);
        response.sendStatus(500);
    });
});