Traefik 入口控制器已经支持traefik.frontend.rule.type: PathPrefixStrip相当长一段时间了,当微服务的根路径需要在example.com/path/.
以下是带有清单的 yaml 示例:
\n\napiVersion: 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\nRun Code Online (Sandbox Code Playgroud)\n\n这种方法的问题在于,当客户端转到 \xe2\x80\x93 时,它不会添加尾部斜杠(example.com/path如果我理解正确的话),这只能通过额外的入口规则来实现。
traefik 的最新版本支持更广泛的注释集,这表明可以在一个规则内声明添加尾部斜杠。
\n\n这是我在 traefik 中解决这个问题的尝试1.7:
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) I\xe2\x80\x99在我的 PostgreSQL 中有一个视图,它可以是正常的也可以是具体化的,具体取决于某些情况。我正在尝试编写一个查询,该查询肯定会删除视图,并且无论它目前的类型是什么,都不会出现错误。然而,这似乎并不容易。当我尝试使用以下代码时,出现错误:
\n\nDROP VIEW IF EXISTS {{ schema }}.{{ viewName }};\nDROP MATERIALIZED VIEW IF EXISTS {{ schema }}.{{ viewName }};\nRun Code Online (Sandbox Code Playgroud)\n\n\xc2\xa0
\n\nSQLSTATE[42809]: Wrong object type: 7 ERROR: "{{ viewName }}" is not a view \nHINT: Use DROP MATERIALIZED VIEW to remove a materialized view. \nRun Code Online (Sandbox Code Playgroud)\n\n因此,当视图具体化时,\xe2\x80\x98IF EXISTS\xe2\x80\x99 在第一行结果为 true,DROP 命令启动,但由于视图类型错误而失败(这是不正常的) 。谁能提出一种既适用于物化视图又适用于普通视图的通用解决方法?
\n我可能面临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) 我有一个使用yarn workspaces和lerna; 的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
我有一个'TODO列表应用程序',目前使用Apollo Client 1.0,Redux和Redux Saga.当我编辑我的TODO列表中的任何项目时,它会立即在各种UI中更新,然后在几秒钟后与服务器同步.此处需要限制,因为否则每次按键都会导致网络请求.当在另一个客户端编辑待办事项并且新数据通过GraphQL订阅到达时,相应的列表项会立即更新,除非它被更改(在这种情况下忽略传入编辑).
我想用Apollo 2.0取代Redux和Redux Saga,因为我目前的应用程序代码非常冗长而且难以调试.在处理我的UI时,我想简单地使用Query/Mutation抽象,并将限制委托给某个apollo-link.
最好的方法是什么?如何在保持本地UI更新的同时为我的项目列表实现限制的双向同步?
有趣的是,这就是Meteor可以通过其定制的数据同步协议开箱即用:-)
我想知道是否有办法从模块中导入某些内容并立即重命名。
这是我可以在 JavaScript 文件中做的事情,假设"my-module"导出myFunction和somethingElse:
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) graphql ×2
elm ×1
import ×1
lerna ×1
monorepo ×1
postgresql ×1
redux ×1
sql-drop ×1
traefik ×1
typescript ×1