我有一个围绕React Table组件构建的功能组件,该组件使用Apollo GraphQL客户端进行服务器端分页和搜索。我正在尝试为搜索实现反跳操作,以便一旦用户停止使用该值键入内容,就只对服务器执行一个查询。我已经尝试过lodash的反跳和真棒的反跳承诺解决方案,但仍然针对服务器在搜索字段中键入的每个字符执行查询。
这是我的组件(删除了不相关的信息):
import React, {useEffect, useState} from 'react';
import ReactTable from "react-table";
import _ from 'lodash';
import classnames from 'classnames';
import "react-table/react-table.css";
import PaginationComponent from "./PaginationComponent";
import LoadingComponent from "./LoadingComponent";
import {Button, Icon} from "../../elements";
import PropTypes from 'prop-types';
import Card from "../card/Card";
import './data-table.css';
import debounce from 'lodash/debounce';
function DataTable(props) {
const [searchText, setSearchText] = useState('');
const [showSearchBar, setShowSearchBar] = useState(false);
const handleFilterChange = (e) => {
let searchText …Run Code Online (Sandbox Code Playgroud) 我的 GraphQL 架构定义为:
type Query {
getEntity(id: Int!): Entity
getEntityUsers(entityId: Int!, statusId: Int): [User]
}
type Entity {
id: Int!
name: String!
email: String!
logo: String
createdAt: DateTime!
updatedAt: DateTime!
users(statusId: Int): [User]
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我有两种获取Entity对象的用户的方法。目前适用于我的查询的是getEntityUsers根解析器方法。此查询如下所示:
query getEntityUsers($entityId: Int!, $statusId: Int) {
users: getEntityUsers(entityId: $entityId, statusId: $statusId) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
.. 变量:
{
entityId: 1,
statusId: 2
}
Run Code Online (Sandbox Code Playgroud)
无论如何,是否可以通过允许我传入 来使另一种方式起作用statusId?现在查询看起来像这样:
query getEntity($id: Int!) {
entity: getEntity(id: $id) {
...
users (statusId: 2) {
... …Run Code Online (Sandbox Code Playgroud) 我有一个用于 apollo 延迟查询的自定义去抖动钩子:
import {useLazyQuery} from '@apollo/react-hooks';
import debounce from "lodash/debounce";
export function useDebouncedQuery(schema) {
const [doQuery, {...rest}] = useLazyQuery(schema);
const query = React.useCallback(debounce(doQuery, 1000), []);
return [query, {
...rest
}]
}
Run Code Online (Sandbox Code Playgroud)
除了onCompleted选项之外,这有效。当实现这样的钩子时:
const [doQuery] = useDebouncedQuery(query);
doQuery({
onCompleted: data => {
console.log(data);
}
})
Run Code Online (Sandbox Code Playgroud)
...该onCompleted选项不会触发。但是,如果我将钩子更改为:
export function useAsyncSelectQuery(schema, options) {
const [doQuery, {...rest}] = _useLazyQuery(schema, options);
...
Run Code Online (Sandbox Code Playgroud)
..并像这样实现它,它的工作原理:
const [doQuery] = useDebouncedQuery(query, {
onCompleted: data => {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
为什么是这样?难道我做错了什么?我有单独的逻辑需要处理传递到onCompleted不同位置的数据,因此在查询初始化时我无法传递该选项。任何帮助是极大的赞赏。
我正在将我的整个代码库从 PHP 切换到 Go,并且在运行的几个进程中,我随机收到此错误:
[mysql] 2016/10/11 09:17:16 packets.go:33: unexpected EOF
Run Code Online (Sandbox Code Playgroud)
这是我的 db 包,用于处理与数据库的所有连接:
package db
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"pkg/db"
)
var connection *sql.DB
var err error
func GetConnection() *sql.DB {
if connection != nil {
fmt.Println("********** CHECKING PING")
err = connection.Ping()
if err == nil {
fmt.Println("************ CONNECTION STILL ACTIVE")
return connection
} else {
fmt.Println("********** PING ERROR: " + err.Error())
}
}
connection, err = sql.Open("mysql", db.DEVUSER + ":" + db.DEVUSER_PASSWORD + "@tcp(localhost:3306)/main?parseTime=true")
if err != nil …Run Code Online (Sandbox Code Playgroud) 我需要拍一张正常的照片:
并添加一个白色透明覆盖,使它看起来像这样:
不要注意转换后的图像上的文字或它是原稿的裁剪版本.我需要简单地将顶部转换为完全相同的图像,只需使用白色透明覆盖层.我也需要它作为cli命令.
我正在尝试将前端React应用程序与本地elasticsearch节点连接。我正在使用ReactiveSearch连接elasticsearch。我的服务器在Digital Ocean上运行,并且在Ubuntu 16.04上运行。我按照他们的快速入门指南在服务器上运行elasticsearch,并在我的elasticsearch.yml文件中添加了以下几行:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length
我的ReactJS组件看起来就像ReactiveSearch入门说的那样:
<ReactiveBase
app="users"
url="http://localhost:9200">
<DataSearch
componentId="SearchSensor"
dataField={["email", "username", "name"]}
title="Search"
placeholder="Search for users..."
/>
</ReactiveBase>
Run Code Online (Sandbox Code Playgroud)
但是,我收到预检请求标头的CORS错误:
当我尝试访问url:时http://localhost:9200/users/active/_msearch,得到以下响应:
{"error":{"root_cause":[{"type":"parse_exception","reason":"Failed to derive xcontent"}],"type":"parse_exception","reason":"Failed to derive xcontent"},"status":400}
Run Code Online (Sandbox Code Playgroud)
但是,如果我转到url:http://localhost:9200/users/active/1它实际上起作用并显示该对象:
{"_index":"users","_type":"active","_id":"1","_version":1,"found":true,"_source":{ "name": "Jon Stevens", "email": "jon@vendorpay.io" }}
这到底是怎么回事?任何帮助是极大的赞赏!
请求/控制台屏幕快照:
我试图返回一个数组或切片,针对字符串针对特定正则表达式的所有匹配项。字符串是:
{city}, {state} {zip}
Run Code Online (Sandbox Code Playgroud)
我想返回一个包含花括号之间所有字符串匹配项的数组。我尝试使用regexp软件包来完成此操作,但无法弄清楚如何返回我要查找的内容。这是我当前的代码:
r := regexp.MustCompile("/({[^}]*})/")
matches := r.FindAllString("{city}, {state} {zip}", -1)
Run Code Online (Sandbox Code Playgroud)
但是,无论我尝试什么,每次返回的结果都是一片空白。
我有一个函数可以解决 Go 不允许在方法声明中设置默认值的问题。我想通过允许可变数量的返回变量来使它更好一点。我知道我可以允许接口数组作为返回类型,然后创建一个包含所有要返回的变量的接口数组,如下所示:
func SetParams(params []interface{}, args ...interface{}) (...[]interface{}) {
var values []interface{}
for i := range params {
var value interface{}
paramType := reflect.TypeOf(params[i])
if len(args) < (i + 1) {
value = params[i]
} else {
argType := reflect.TypeOf(args[i])
if paramType != argType {
value = params[i]
}
value = args[i]
}
values = append(values, value)
}
return values
}
Run Code Online (Sandbox Code Playgroud)
这是您要为其定义默认值的方法的示例。您将其构建为可变参数函数(允许可变数量的参数),然后定义您在函数内部而不是在声明行中查找的特定参数的默认值。
func DoSomething(args ...interface{}) {
//setup default values
str := "default string 1"
num := 1
str2 := …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个 Linux 命令行实用程序,它可以让我从现有图像创建动画 gif,然后应用平移和/或缩放来创建动画 gif。我已经研究了一些,例如 ImageMagick,但没有发现任何帮助。我需要的东西要么是命令行实用程序,要么是节点模块。任何帮助是极大的赞赏!
我正在尝试从此处获取示例,以使用 phantomjs 录制网页并将标准输出(即图像)通过管道传输到 ffmpeg 命令以创建视频。说明您需要运行的命令是:
phantomjs runner.js | ffmpeg -y -c:v png -f image2pipe -r 25 -t 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart dragon.mp4
Run Code Online (Sandbox Code Playgroud)
如果我直接在终端中运行该命令的类似版本,我可以让它正常工作。问题是我需要通过 Golang os/exec包运行上述命令。与:
cmd := exec.Command(parts[0], parts[1:]...)
Run Code Online (Sandbox Code Playgroud)
方法,第一个参数是正在执行的命令的基本可执行文件,它不遵守管道。我想让它在一个命令中工作,这样我就不必将所有图像写入文件,然后运行第二个 ffmpeg 命令来读取所有这些图像。有什么建议?
我需要运行一个ffmpeg命令来从图像创建一个视频,图像之间的淡入淡出作为过渡。该命令源自这篇文章。我需要通过 Golang os/exec包运行它。我需要运行的命令是:
ffmpeg -loop 1 -t 5 -i img-0.png -loop 1 -t 5 -i img-1.png -loop 1 -t 5 -i img-2.png -filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v];[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v];[0:v][b1v][1:v][b2v][2:v]concat=n=5:v=1:a=0,format=yuv420p[v]" -map '[v]' -c:v libx264 -pix_fmt yuv420p -r 30 -s 1280x720 -aspect 16:9 -crf 1 -preset ultrafast output.mp4
Run Code Online (Sandbox Code Playgroud)
如果您直接在终端中运行此命令,它就可以正常工作。但是,它不适用于我的代码。这是我的代码,它接受一个字符串命令并通过os/exec包运行它:
command := "ffmpeg -loop 1 -t 5 -i img-0.png -loop 1 -t 5 -i img-1.png -loop 1 -t 5 -i img-2.png -filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v];[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v];[0:v][b1v][1:v][b2v][2:v]concat=n=5:v=1:a=0,format=yuv420p[v]" -map '[v]' -c:v libx264 -pix_fmt yuv420p -r 30 …Run Code Online (Sandbox Code Playgroud) 我正在尝试让私有 GitHub 操作在我的私有 GitHub 组织中工作。包含这些工作流程“模板”的私人存储库具有这个简单的文件结构,因为我只是试图让最低限度的工作:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 action.yml\nRun Code Online (Sandbox Code Playgroud)\n文件action.yml内容是:
name: Test\n\non: push\n\njobs:\n test:\n name: Test\n runs-on: ubuntu-latest\n steps:\n\n - name: Echo\n run: |\n echo Heyyyyy\nRun Code Online (Sandbox Code Playgroud)\n我正在尝试在另一个私有存储库中使用此操作,并使用包含以下内容的工作流程文件:
\nname: Test\n\non:\n push:\n branches:\n - master\n\njobs:\n test:\n name: Test\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v2\n with:\n repository: <private-actions-repo>\n token: ${{ secrets.REPO_TOKEN }}\n path: github-actions\n - name: Test private action\n uses: ./github-actions/test\nRun Code Online (Sandbox Code Playgroud)\n当此操作运行时,我收到以下错误:\n##[error]Top level 'runs:' section is required for /home/runner/work/<private-repo>/./github-actions/test/action.yaml
为了对此进行调试,我将使用模板的工作流程更新为该cat文件的文件内容: …
我有一个前端React应用程序和一个Go后端服务作为前端的API。两者都是同一名称空间中的Kubernetes服务。在不使用外部IP的情况下如何与Go后端服务通信?我知道它可以与外部ip一起使用,但是我无法让fqdn像应该的那样正确解析。前端服务是从nginx:1.15.2-alpinedocker映像构建的。如何获得前端React应用与后端Go服务器通信?
前端service.yaml:
apiVersion: v1
kind: Service
metadata:
name: ui
namespace: client
labels:
app: ui
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: ui
Run Code Online (Sandbox Code Playgroud)
前端Deployment.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ui
namespace: client
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 2
template:
metadata:
labels:
app: ui
spec:
containers:
- name: ui
image: #######
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
Run Code Online (Sandbox Code Playgroud)
后端service.yaml:
apiVersion: …Run Code Online (Sandbox Code Playgroud)