【问题标题】:What is the simplest and/or best way to send data between routes in node.js express?在 node.js express 中的路由之间发送数据的最简单和/或最佳方式是什么?
【发布时间】:2014-11-27 16:27:14
【问题描述】:

我的设置是这样的:

我使用来自 github 的 omdb 库从 omDB 获取数据,整个部分如下所示:

router.post('/search', function(req, res) {

    var omdb = require('omdb');

    var title = req.body.title;

    omdb.get( {title: title}, true, function(err, movie){
        if(err) {
            return console.log(err);
        }

        if(!movie) {
            return console.log('No movie found');
        }

        //console.log('%s (%d)', movie.title, movie.year);

        result = movie.title+movie.year+movie.poster;

        console.log(result);

        res.redirect('/result');
    })


});

然后我想在另一个路由中使用该发布请求的结果:

router.get('/result', function(req, res) {

    res.render('result', { title: title});

});

考虑到我是一个 node.js 菜鸟,什么是最好的也是最简单的方法。:)

【问题讨论】:

标签: node.js routes


【解决方案1】:

假设您使用的是 express.js,您可以使用 session 中间件:

router.post('/search', function(req, res) {

    var omdb = require('omdb');

    var title = req.body.title;

    omdb.get( {title: title}, true, function(err, movie){
        if(err) {
            return console.log(err);
        }

        if(!movie) {
            return console.log('No movie found');
        }

        //console.log('%s (%d)', movie.title, movie.year);

        req.session.result = {
            title: movie.title,
            year: movie.year,
            poster: movie.poster
        };

        res.redirect('/result');
    })


});

然后:

router.get('/result', function(req, res) {

    if (req.session.result) {

        var result = req.session.result;
        req.session.result = null;
        res.render('result', { movie: result });

    }
    else {

        // Redirect to error page.

    }
});

【讨论】:

  • 谢谢,等我有吃的时候试试这个!
  • 我收到错误无法设置未定义的属性“结果”。我已经安装了 express-session 并做了一个 var session= require('express-session')
  • 您需要初始化中间件 - 查看 repo 的 README 中的示例。
  • 附注,你知道为什么我的 img src 标签没有被渲染吗?感谢所有的帮助顺便说一句:)
  • 没问题。我必须查看您的代码才能帮助您。也许打开另一个问题比在 cmets 中继续讨论更好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多