小编Lak*_*aky的帖子

带有可选参数的路径 - 播放2.1 Scala

所以在Play 2.0中我有这个:

GET     /tasks/add              controllers.Tasks.addTask(parentId: Option[Long] = None)
GET     /tasks/:parentId/add    controllers.Tasks.addTask(parentId: Option[Long])
Run Code Online (Sandbox Code Playgroud)

使用这样的控制器方法:

def addTask(parentId: Option[Long]) = Action { 
    Ok(views.html.addTask(taskForm, parentId))  
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.当我迁移到2.1时,它似乎抱怨这些行:No URL path binder found for type Option[Long]. Try to implement an implicit PathBindable for this type.基本上,我想要完成的是将路由tasks/add和路由tasks/123/add链接到接受的相同方法Optional[Long].知道怎么做吗?谢谢.

好吧,所以我得到了一种不是bug,它是Lighthouse上的一个功能响应:"我们删除了路径可绑定中的Option [Long]支持,因为它有一个可选的路径参数没有意义.你可以实现自己的路径可绑定,如果你愿意支持它." 到目前为止,我有2个解决方案,传递-1作为parentId,我不太喜欢.或者有两种不同的方法,在这种情况下可能更有意义.实现PathBindable现在似乎不太可行,所以我可能会坚持使用2种方法.

scala playframework-2.0 playframework-2.1

14
推荐指数
3
解决办法
2万
查看次数

Node.js将数据从终端命令传输到客户端

这里已经有一些关于node.js执行命令和输出数据的问题,但是我仍然无法解决这个问题.我想要的是使用node.js我想执行一个运行很长时间的python脚本并产生一些中间输出.我想在生成后立即将这些输出流式传输到客户端.我尝试过以下内容,但我得到的是,只有在命令完成后才能获得整个输出.如何让它实时将数据传递到套接字?谢谢.

function run_cmd(cmd, args) {
  var spawn = require('child_process').spawn,
  child = spawn(cmd, args);
  return child;
}

io.sockets.on('connection', function (socket) {
  var foo = new run_cmd('python', ['test.py']);
  foo.stdout.setEncoding('utf-8');
  foo.stdout.on('data', function(data) {
     console.log('sending data');
     io.sockets.emit('terminal', {output: data});;
  });
);
Run Code Online (Sandbox Code Playgroud)

node.js

5
推荐指数
1
解决办法
3455
查看次数