javascript - 发送相同的数据以在 Node.js/Express.js 中的 POST 和 GET 中查看

标签 javascript node.js express

最初,我尝试使用 router.postrouter.get 方法,并将它们在我的代码中分开。

然后我选择使用router.all,并在同一个函数中单独的POSTGET并使用两个res。 render 和一个公共(public)对象以及它们共享的 viewData,因为它将加载相同的屏幕。

我想知道这是否是一个好的方法以及通常如何在 node.js/express.js 中完成此操作:

router.all('/profile', function(req, res, next) {
    var viewData = {
        data1: Demo.getdata(1),
        data2: Demo.getdata(2),
        data3: Demo.getdata(3),
        data4: Demo.getdata(4)
    };

    if (req.method === 'POST') {
        request.get({
            uri: res.locals.baseUrl + '/getData',
            qs: {
                param1: param1
            }
        }, function(error, response, body) {
            if (error || response.statusCode != 200) {
                viewData.message = 'There was a problem!!';
            }
            else{
                var data = JSON.parse(body);
                viewData.message = 'Good job!!';
                viewData.moreData= data.moreData;
            }
            res.render('settings/profile', viewData);
        });

    }
    else{
        res.render('settings/profile', viewData);
    }
});

最佳答案

对于您的情况,我建议将它们分开,因为它们(几乎)没有任何共同点。

为了避免复制/粘贴代码,我要做的就是使 router.post('/profile', ...) call res.redirect("/profile"); 以便在需要时回退到 GET

关于javascript - 发送相同的数据以在 Node.js/Express.js 中的 POST 和 GET 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42345922/

相关文章:

javascript - 从大型数组中返回均匀数量为 "spaced"的索引。

javascript - 如何使用同一按钮设置多个输入字段的值

node.js - chai-webdriver ( Node ) ... 描述不是一个函数

node.js - Node js快速路由所有路径

javascript - setTimeout 和 setImmediate 之间的优先级

javascript - 通过 Selenium WebDriver 从 JavascriptExecutor 接口(interface)使用 executeScript 方法时,arguments[0] 和 arguments[1] 是什么意思?

javascript - node.js 有 'match()' 方法吗?如果是这样,语法是什么?

mysql - 如何使用 MySQL 数据库快速创建分页?

node.js - 将 ember.js 与 node.js + express.js 结合使用

javascript - 使用Mongoose关闭连接池