小编Ale*_*aev的帖子

在 traefik 入口中向微服务根路径添加尾部斜杠

Traefik 入口控制器已经支持traefik.frontend.rule.type: PathPrefixStrip相当长一段时间了,当微服务的根路径需要在example.com/path/.

\n\n

以下是带有清单的 yaml 示例:

\n\n
apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: example\n  annotations:\n    traefik.frontend.rule.type: PathPrefixStrip\nspec:\n  rules:\n  - host: example.com\n    http:\n      paths:\n      - path: /path/\n        backend:\n          serviceName: example\n          servicePort: http\n
Run Code Online (Sandbox Code Playgroud)\n\n

这种方法的问题在于,当客户端转到 \xe2\x80\x93 时,它不会添加尾部斜杠(example.com/path如果我理解正确的话),这只能通过额外的入口规则来实现。

\n\n

traefik 的最新版本支持更广泛的注释集,这表明可以在一个规则内声明添加尾部斜杠。

\n\n

这是我在 traefik 中解决这个问题的尝试1.7

\n\n
apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: example\n  annotations:\n    traefik.ingress.kubernetes.io/redirect-permanent: "true"\n    traefik.ingress.kubernetes.io/redirect-regex: https?://example.com/path$\n    traefik.ingress.kubernetes.io/redirect-replacement: https://example.com/path/\n    traefik.ingress.kubernetes.io/request-modifier: "ReplacePathRegex: ^/path/(.*) /$1"\nspec:\n  rules:\n  - host: example.com\n    http:\n      paths:\n      - path: /path\n        backend:\n          serviceName: example\n          servicePort: http\n …
Run Code Online (Sandbox Code Playgroud)

traefik traefik-ingress

6
推荐指数
0
解决办法
2970
查看次数

在一个查询中删除 Postgresql 9.3 中的普通视图或物化视图

I\xe2\x80\x99在我的 PostgreSQL 中有一个视图,它可以是正常的也可以是具体化的,具体取决于某些情况。我正在尝试编写一个查询,该查询肯定会删除视图,并且无论它目前的类型是什么,都不会出现错误。然而,这似乎并不容易。当我尝试使用以下代码时,出现错误:

\n\n
DROP VIEW IF EXISTS {{ schema }}.{{ viewName }};\nDROP MATERIALIZED VIEW IF EXISTS {{ schema }}.{{ viewName }};\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xc2\xa0

\n\n
SQLSTATE[42809]: Wrong object type: 7 ERROR:  "{{ viewName }}" is not a view  \nHINT:  Use DROP MATERIALIZED VIEW to remove a materialized view.    \n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,当视图具体化时,\xe2\x80\x98IF EXISTS\xe2\x80\x99 在第一行结果为 true,DROP 命令启动,但由于视图类型错误而失败(这是不正常的) 。谁能提出一种既适用于物化视图又适用于普通视图的通用解决方法?

\n

postgresql materialized-views sql-drop

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

Apollo GraphQL 服务器:按单独解析的字段过滤(或排序)

我可能面临Apollo GraphQL 服务器的设计限制,我想问一下是否有解决方法。

我的架构包含类型Thing,具有字段flag。我希望能够things按 的值进行过滤flag,但如果单独解析此字段似乎是不可能的。如果我想对things. 下面是一个例子:

  type Thing {
    id: String!
    flag Boolean!
  }

  type Query {
    things(onlyWhereFlagIsTrue: Boolean): [Thing!]!
  }
Run Code Online (Sandbox Code Playgroud)
const resolvers = {
  Thing: {
    flag: async ({id}) => {
      const value = await getFlagForThing(id);
      return value;
    }
  },
  Query: {
    async things(obj, {onlyWhereFlagIsTrue = false}) {
      let result = await getThingsWithoutFlags();
      if (onlyWhereFlagIsTrue) {
        // ? this does not work, because flag is still undefined …
Run Code Online (Sandbox Code Playgroud)

graphql apollo-server

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

TypeScript monorepos中对等包的类型定义:开发与生产

我有一个使用yarn workspaceslerna; 的monorepo项目。它的所有部分都用TypeScript编写。这些模块位于类似的子文件夹中,packages/module-n并且每个模块都有自己package.json的行,并带有以下几行:

"main": "dist/index.js",
"types": "dist/index.ts",
Run Code Online (Sandbox Code Playgroud)

每个软件包的源代码都位于中packages/module-n/src/index.ts,因此没有什么异常。

从命令行构建或发布时,一切都很好-感谢每个软件包文件夹中都有tsconfig.json一个build脚本。但是,在VSCode中进行日常代码编辑时,即使我运行tsc --watch所有软件包以使链接的依赖项保持同步,事情也变得不太方便。

当我命令单击指向对等程序包的定义时,VSCode带我到packages/package-n/dist/index.d.ts而不是packages/package-n/src/index.ts我当前正在编辑的位置。另外,当我想用​​重构某些内容时F2,可能dist/index.d.ts偶尔会修改文件,这会build:watch由于错误而迫使我重新启动。问题是TypeScript看到了手动调整,**/dist/index.d.ts并拒绝进一步更新这些文件。

为了克服这种不便,我在根目录中编写了这两个脚本package.json,但我不是自己的解决方案的忠实拥护者:

"use-dev-typings": "lerna exec \"replace --quiet dist\\/index\\.d\\.ts src/index.ts package.json\"",
"use-prod-typings": "lerna exec \"replace --quiet src\\/index\\.ts dist/index.d.ts package.json\""
Run Code Online (Sandbox Code Playgroud)

这是我在同一根目录中使用它们的方式package.json

"build": "yarn use-prod-typings && lerna run build",
"build:watch": "lerna run build; yarn use-dev-typings && lerna run --parallel build:watch",
Run Code Online (Sandbox Code Playgroud)

我们的想法是,在我开始编辑VSCode文件,从而去 …

typescript visual-studio-code typescript-typings lerna monorepo

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

Apollo Client 2.0中的限制双向服务器同步

我有一个'TODO列表应用程序',目前使用Apollo Client 1.0,Redux和Redux Saga.当我编辑我的TODO列表中的任何项目时,它会立即在各种UI中更新,然后在几秒钟后与服务器同步.此处需要限制,因为否则每次按键都会导致网络请求.当在另一个客户端编辑待办事项并且新数据通过GraphQL订阅到达时,相应的列表项会立即更新,除非它被更改(在这种情况下忽略传入编辑).

我想用Apollo 2.0取代Redux和Redux Saga,因为我目前的应用程序代码非常冗长而且难以调试.在处理我的UI时,我想简单地使用Query/Mutation抽象,并将限制委托给某个apollo-link.

最好的方法是什么?如何在保持本地UI更新的同时为我的项目列表实现限制的双向同步?

有趣的是,这就是Meteor可以通过其定制的数据同步协议开箱即用:-)

data-synchronization graphql redux apollo-client

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

从 elm 中的其他模块导入时使用别名

我想知道是否有办法从模块中导入某些内容并立即重命名。

这是我可以在 JavaScript 文件中做的事情,假设"my-module"导出myFunctionsomethingElse

import { myFunction as myRenamedFunction, somethingElse } from "my-module";
Run Code Online (Sandbox Code Playgroud)

这是我想在 Elm 中做的事情,但这会产生语法错误:

import MyModule exposing (myFunction as myRenamedFunction, somethingElse)
Run Code Online (Sandbox Code Playgroud)

import elm

2
推荐指数
1
解决办法
355
查看次数