将控制器操作链接到一个路由

时间:2014-10-07 16:06:39

标签: sails.js

我不确定我在这里做错了什么。我在这里关注这个例子:https://gist.github.com/mikermcneil/5737561

我想将两个控制器动作链接到一个' get'路线。我需要返回一些json数据和一个视图。当尝试使用视图发送数据时,我收到一条socket.io错误消息,指出我无法通过视图发送信息。

'get /users': [
        {
          controller: 'UserController',
          action: 'users'
        },
        {
          controller: 'UserController',
          action: 'getuser'
        }
      ],

现在为了让它发挥作用,我必须要有两个'得到'路线。一个返回我的视图ejs文件,另一个返回套接字也可以连接。

var socket = io.connect('http://localhost:1337');
          socket.get('/user', {}, function(users) {
          var grid = new Slick.Grid("#userGrid", users.users, columns, options);
        });

这可行,但后来我有一个随机/用户路线,任何人都可以访问,只返回json。我希望没有可以通过浏览器访问的随机路由。那么我可以将控制器动作链接到一条路线吗?或者有没有办法在一个动作中返回res.view和json数据?

users: function(req, res, next) {
    //User.find().populateAll().exec(function(err, users){
    res.view('user/users');
    next();
    // res.json({
    //   success: true,
    //   users: users
    //    });
    //});
  },

  //get user data and send it as json to for sockets
  getuser: function (req, res) {
    User.find().populateAll().exec(function(err, users) {
      res.json({users: users});
    });
  },

我尝试使用next()而没有。谢谢你的帮助!

0 个答案:

没有答案