javascript - 风 sails js : Setting response method based on request parameter

标签 javascript node.js express sails.js single-page-application

所以我一直在使用 Sailsjs 开发一个 SPA 项目。问题是:

加载第一页时,我在 Controller 中使用 res.viewres.render。但是,对于后续请求,我不想使用 res.viewres.render,而是想使用 res.json .

现在我使用的方法是:

返回 req.param('json') ? res.json(myObj) : res.view('layout', myObj);

这是可行的,但我正在寻找一种更通用和抽象的方法,在该方法中我的 Controller 本身会知道(基于req.param('json'))是否使用res.viewres.json,无需我明确告知。

有什么帮助吗?

最佳答案

这就是 res.ok() 的用途。

在下面的 Controller 操作中,res.ok 将使用 data 作为 View 局部变量显示 myAction.ejs,或者响应data 作为 JSON,具体取决于请求的传入方式(即通过 AJAX、套接字或常规浏览器请求):

module.exports = {

    myAction: function(req, res) {

       var data = {someKey: "someVal"};

       return res.ok(data);

    }

}

在内部,ok 响应使用 req.wantsJSON 来确定要做什么;它会检查 header ,查找 xhr 对象,并且通常会尽力猜测您的意图。 req.wantsJSON 适用于所有请求(req.isSocket 也是如此),因此您可以根据需要自行使用它们。

关于javascript - 风 sails js : Setting response method based on request parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25682116/

相关文章:

javascript - 带有模态上一个/下一个按钮的图像 slider 不起作用?

javascript - 如何从同一类获取输入元素之一的值?

javascript - 悬停后保持视频控制 3 秒

Node.JS 提高 cassandra 性能

node.js - 如何在nodejs中使用sweetalert?

node.js - 尝试使用 socket.io 使变量可供浏览器使用

javascript - 在 html 页面上动态显示特定的 div

node.js - Mongoose 会过滤掉额外的属性吗?

node.js - 从 stream() 移动到 cursor() 时,lean() 不再有效

mysql - nodejs - passport.use 回调返回 dataValues 和 _previousDataValues 而不是普通对象