小编Raf*_* K.的帖子

如何下载fetch响应作为文件

这是代码 actions.js

export function exportRecordToExcel(record) {
    return ({fetch}) => ({
        type: EXPORT_RECORD_TO_EXCEL,
        payload: {
            promise: fetch('/records/export', {
                credentials: 'same-origin',
                method: 'post',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify(data)
            }).then(function(response) {
                return response;
            })
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

返回的响应是一个.xlsx文件.我希望用户能够将其保存为文件,但没有任何反应.我假设服务器正在返回正确类型的响应,因为它在控制台中说

Content-Disposition:attachment; filename="report.xlsx"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我该怎么做减速机?

javascript flux reactjs reactjs-flux

38
推荐指数
5
解决办法
7万
查看次数

Laravel 5 - 根据需要验证数组,但允许传递空数组

我正在使用验证器验证Laravel 5.4中的请求,请参阅文档:https://laravel.com/docs/5.4/validation#validating-arrays

基本上,这是Controller中的代码:

public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'required',
    ];
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想要求字段"items"的存在,并且此代码执行它,但问题是当"items"字段是空数组时验证失败,即

{
    "fields": []
}
Run Code Online (Sandbox Code Playgroud)

,这是一种不受欢迎的行为.我知道这是"必需"参数的记录行为,但我没有看到任何"干净"的解决方法.我也尝试过:

public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'required_unless:items,[]',
    ];
    ...
}
Run Code Online (Sandbox Code Playgroud)

但它也失败了,可能是因为文档说它在"required_unless"子句之后适用于不同的字段,但我并不完全确定.

你能否建议我一种方法来要求存在字段"items"而不禁止空数组?

编辑:我想到的另一个"显而易见"的方法是使用"present | array"规则,它几乎可以实现我想要的,但不幸的是,一个空字符串也通过了验证规则,这可能是一个错误Laravel,也许不是 - 我在Laravel github存储库上为它打开了一个问题:https://github.com/laravel/framework/issues/18948

php validation laravel laravel-5 laravel-5.4

16
推荐指数
3
解决办法
1万
查看次数

添加新列时,在alembic中设置列顺序

我正在努力找到一种干净的方式(没有原始SQL)来设置alembic中的列顺序.例如,我想在'id'列之后添加一个名为'name'的新列,如下所示:

from alembic import op
import sqlalchemy as sa

...

op.add_column(
    'people',
    sa.Column(
        'name',
        sa.String(),
        nullable=False
    ),
    after='id'
)
Run Code Online (Sandbox Code Playgroud)

但是当然,alembic没有'after'参数,因此这段代码失败了,而且我没有在docs中找到与'after'参数相当的东西.我只能将列附加到表的末尾.

任何人都可以建议如何在alembic/sqlalchemy中实现我想要的东西?没有原始SQL可能吗?

python sqlalchemy database-migration alembic

9
推荐指数
1
解决办法
932
查看次数

jira-ruby gem限制返回的数量?

我正在尝试使用名为jira-ruby的 gem从JIRA获取issuses .问题是,结果包含70个问题,但我只能看到前50个.当直接使用JIRA REST API时,我可以将maxResults参数(在JQL之外)设置为更高的数字.但我无法在红宝石中发现这种可能性.

有没有可能直接使用这个ruby gem或任何其他同样简单的解决方案设置maxResults标志?

代码如下:

require 'jira'

class PagesController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  def home

    options = {
        :username => 'xxx',
        :password => 'xxx',
        :site     => "https://xxx.atlassian.net",
        :context_path => '',
        :auth_type => :basic
    }

    client = JIRA::Client.new(options)
    @issues = 0
    client.Issue.jql("project = AA AND fixVersion = it11").each do |issue|
      @issues += 1 #  "#{@issues} <br> #{issue.id} - …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails jira jira-rest-api

8
推荐指数
1
解决办法
2194
查看次数

fetch-mock不模拟我的提取

这是代码片段:

var fetch = require("node-fetch");
var fetchMock = require("fetch-mock");

function setupMockBlockChainExplorer() {
  fetchMock.mock("https://cardanoexplorer.com/api/addresses/summary/DdzFFzCqrhsmagp4fDZpcY9UaBJk4Z8GaDfxqMCSwxPs3PnVoXmJWUZcgAxw3diCHVYauontEfk7YGeAu2LvAwq3aG2XQ8Mtsz7Vc8LA", {
    "status" : 200,
    "body" : "override"
  });
}

async function makeRequest(url, method = "get", body = null, headers = null) {
  const res = await fetch(url, {
    method: method,
    headers: headers,
    body: body,
  });

  return res.json()
};

setupMockBlockChainExplorer();

var req = makeRequest("https://cardanoexplorer.com/api/addresses/summary/DdzFFzCqrhsmagp4fDZpcY9UaBJk4Z8GaDfxqMCSwxPs3PnVoXmJWUZcgAxw3diCHVYauontEfk7YGeAu2LvAwq3aG2XQ8Mtsz7Vc8LA");

// I would expect it to print "override" but it prints the http response from the real request instead
req.then(console.log)
Run Code Online (Sandbox Code Playgroud)

因此,正如您在上面的代码中看到的那样,我试图覆盖HTTP请求,但是我仍然使用fetch来访问真实的URL。我已经阅读了fetch-mock文档(http://www.wheresrhys.co.uk/fetch-mock/installation.html),并且还尝试过这样的配置:

fetchMock.config …
Run Code Online (Sandbox Code Playgroud)

fetch node.js fetch-mock

6
推荐指数
1
解决办法
3295
查看次数

liquidsoap不会重新加载播放列表文件

我对Liquidsoap有一个非常奇怪的问题.我有以下播放列表:

myplaylist = playlist(mode="normal",playlist_file,reload_mode="rounds",reload=1)

myplaylist = on_metadata(apply_metadata,myplaylist)
Run Code Online (Sandbox Code Playgroud)

其中apply_metadata调用python脚本,该脚本在调用时立即更新播放列表,但有时Liquidsoap会在重新加载后继续播放旧的播放列表,即使调用了apply_metadata过程也是如此.

在此先感谢您的帮助.

Liquidsoap脚本的完整代码:

# This function is called when
# a new metadata block is passed in
# the stream.
def apply_metadata(m) =
  title = m["filename"]
  artist = m["artist"]
  print("Now playing: #{title} by #{artist}")

  filename = string.split(separator="/",title) # rozdelime cestu po lomitkach
  filename = list.nth(list.rev(filename),0) # vezmeme meno suboru
  filename = list.nth(string.split(separator="\.",filename),0) # odpojime koncovku .mp3

  command = "python3.3 feedback.py " ^ filename
  system(command)

end

#!/usr/bin/liquidsoap 
# Log dir 
set("log.file.path","/tmp/basic-radio.log")

#tidy up before …
Run Code Online (Sandbox Code Playgroud)

streaming stream audio-streaming liquidsoap

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

为什么按等级合并,不计算?

我想知道,为什么在union-find算法中 - 你按照它们的高度合并两棵树 - 将较小的树连接到较高的树(在没有路径压缩的简单变体中).

如果你按照元素的数量合并它们会更糟糕吗 - 用更少的元素将树用更少的元素附加到树上?

algorithm data-structures union-find

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

在服务器上构建 create-react-app 时防止停机

我在 Amazon EC2 实例上托管一个 create-react-app,每次部署新版本的 Web 应用程序(即 run )时yarn react-scripts build,都会有几分钟的停机时间,直到应用程序构建完成。build/该应用程序由 直接从文件夹提供服务serve ./build -s

我考虑过从不同的文件夹提供服务,例如deployed/,仅在文件夹中的构建build/完成后才复制到该文件夹​​。这应该可以最大限度地减少停机时间。但我没有发现其他人推荐这种做法,如果真的推荐的话,我猜这react-scripts build会做类似的开箱即用的事情,以防止提供部分构建的资产。

所以我的问题是,在服务器上构建资产时是否有某种标准方法可以防止停机。

reactjs create-react-app

5
推荐指数
0
解决办法
990
查看次数