SailsJS:使用变量重定向到控制器操作

时间:2017-11-28 11:09:12

标签: node.js sails.js ejs

我正在使用带有ejs引擎的sailsJS,我想将用户重定向到带有消息的输入页面(验证错误......)。 我过去常常在PHP中使用laravel(返回重定向('仪表板') - > with('status','Profile updated!');)

即:我需要重新定向用户,说该网站不存在

find : function(req,res){
    var id = req.param(íd');
    Site.find(id).where({isDeleted : null })
    .exec(function(err,siteFound){
        if(err) console.log(err);
        if(siteFound) {
            return res.view('site/show', {
                site : siteFound
            });
        } else {
             return res.redirect('/site');
          }
    })
},

我搜索了sails文档,但一无所获。如何在SailsJS中执行此操作?

感谢

更新:我通过安装sails-hook-flash找到了我需要的东西。我需要的功能称为flash messages。 谢谢你的帮助!

  

块引用

2 个答案:

答案 0 :(得分:1)

我无法确定您是否需要真正的浏览器重定向。浏览器重定向意味着向浏览器发送一条消息,说明“使用此其他网址”,然后从您的应用获取新数据(意味着新的reqres对象)。如果这是你想要的,我会说传递数据的唯一真正选项是查询字符串,例如:

return res.redirect('/site?message=notfound');

然后,在您的网站接收控制器操作中,您可以通过req.param('message')

访问此网站

但是,如果您只想在不让浏览器重定向的情况下返回适当的现在内容,您可以调用您喜欢的任何视图或控制器操作:

if(siteFound) {
    return res.view('site/show', {
        site : siteFound
    });
} else {
    // uncomment one of the options:

    // ONE: return another view
    // return res.view('site/notfound, {requested: id});

    // TWO: pass to another controller action in same controller
    // req.options.message = 'not found';
    // return module.exports.someOtherAction(req, res);

    // THREE: pass to a controller action in another controller
    // req.options.message = 'not found';
    // var OtherController = require('./OtherController');
    // return OtherController.someOtherAction(req, res);
}

这三个选项中的任何一个都会让您看到用户请求的网址(“/ site / abc123”或其他),但会显示您指定的内容。

答案 1 :(得分:0)

res.notfound("my message string");应该做对吗? 如果是期望自定义响应的ajax请求,您可以使用res.json()。 阅读有关res对象HERE和自定义notfound回复HERE的文档。