小编Fre*_*ors的帖子

在 Go 1.18 中 strings.Title() 已被弃用。现在该用什么?如何?

正如这里建议的,人名应该大写,比如John William Smith

我正在用 Golang 编写一个小软件,它从用户的表单输入中获取姓氏和名字。

在 Go 1.18 之前我一直在使用:

lastname = strings.Title(strings.ToLower(strings.TrimSpace(lastname)))
firstname = strings.Title(strings.ToLower(strings.TrimSpace(firstname)))
Run Code Online (Sandbox Code Playgroud)

它可以工作,但现在 Go 1.18已弃用strings.Title()

他们建议改用golang.org/x/text/cases

所以我想我应该改变我的代码,如下所示:

caser := cases.Title(language.Und)

lastname = caser.Title(strings.ToLower(strings.TrimSpace(lastname)))
firstname = caser.Title(strings.ToLower(strings.TrimSpace(firstname)))
Run Code Online (Sandbox Code Playgroud)

它的工作原理与以前相同。

区别在于荷兰语单词的标题ijsland应该是 asIJsland和 not Ijsland

问题

caser := cases.Title(language.Und)在我使用的行中Und,因为我不知道要使用什么语言标签

我应该使用language.Englishlanguage.AmericanEnglish或其他?

到目前为止,就像是strings.Title()在使用UndEnglish

go

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

如何在 Svelte 3 中有条件地添加和删除 `use:` 属性?

有没有办法use:在 Svelte 3 中优雅地有条件地添加和删除属性?

例子:

<script>
    import {classes} from "./functions.js"

    export let originalClasses
</script>

<button use:classes>Button</button>
Run Code Online (Sandbox Code Playgroud)

有没有办法添加或删除use:classesiforiginalClasses为 true?

svelte svelte-3

11
推荐指数
1
解决办法
3352
查看次数

如何输入强制转换 Svelte 3 反应式语法变量?

我不知道如何输入 Svelte 3 反应式语法变量。

<script lang="ts">
  import type { Player, Team } from "./types";

  import { DEFAULT_PLAYER } from "./utils";

  $: player = DEFAULT_PLAYER as Player;
    $: team = { search: "Real", players: [] } as Team;
</script>
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

'Team' cannot be used as a value because it was imported using 'import type'.ts(1361)
Run Code Online (Sandbox Code Playgroud)

如果我用这个代替:

$: team = ({ search: "Real", players: [] } as Team);
Run Code Online (Sandbox Code Playgroud)

VSCode 扩展svelte.svelte-vscode格式与我保存时的第一个扩展格式相同。

这是我的错吗?

有没有更好的方法来投射这些反应性变量?

casting typescript svelte svelte-3

11
推荐指数
2
解决办法
5173
查看次数

express.js,如果删除下一个参数,错误处理程序将不起作用

我正在学习Express.js并使用他们的生成器,我生成了一个新的应用程序:

npm install express-generator -g && express myapp
Run Code Online (Sandbox Code Playgroud)

之后我看到app.js有这样的代码:

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render("error");
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您在图像中看到的那样,eslint正在抱怨已next声明但从未使用过的参数。我同意,但如果我删除它express不会呈现错误页面。

为什么会有这种行为?

这对我来说很危险,因为我不能再相信 eslint 或我的编码学位了?我肯定错过了一些东西。但什么

javascript node.js express eslint

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

GraphQL和CSRF保护

我读了很多:

  1. https://github.com/pillarjs/understanding-csrf
  2. https://security.stackexchange.com/questions/10227/csrf-with-json-post
  3. JSON Web服务是否容易受到CSRF攻击?
  4. (ApolloServer站点上没有任何内容:https ://www.apollographql.com/docs/apollo-server/ )

但是,我还无法理解我们的端点(// graphql)是否受到这种类型的攻击的保护,或者是否有必要使用以下解决方案来保护它:https : //github.com/expressjs/csurf

我不清楚的是在这里:https : //github.com/pillarjs/understanding-csrf他们说:

当您错误地使用CSRF令牌时:...将它们添加到JSON AJAX调用中如上所述,如果您不支持CORS并且您的API严格是JSON,则将CSRF令牌添加到您的AJAX调用中绝对没有意义。

如果我们将端点限制为仅使用Content-Type: application/json,那么我们安全吗?

security csrf csrf-protection graphql graphql-js

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

Svelte 3,异步 onMount 还是有效的替代方案?

我需要的是async-await在 Svelte 中使用onMount()

或者,也许您可​​以建议我什么是错误的以及我可以使用的替代方法。

再现

  1. 去这里:https : //svelte.dev/repl/000ae69c0fe14d9483678d4ace874726?version=3.23.0
  2. 打开控制台
  3. 点击按钮
  4. 你应该看到消息:"Mounting...""A lot of background work..."
  5. 如果再次单击,则不会写入销毁消息

为什么?

难道onMount()识别async功能的承诺?应该是?

我需要这种async行为,因为我需要function lazyLoading()在渲染Child组件之前等待。

在 Svelte 中是否有其他方法可以做到这一点?

javascript ecmascript-6 svelte svelte-component svelte-3

6
推荐指数
2
解决办法
2484
查看次数

GraphQL 订阅、websocket、nodejs、Express 会话

我正在使用 Apollo Server 2(但这个问题不仅与 Apollo 相关)和 Express.js vanilla(与apollo-server-express)。

除了Express 会话机制外,所有内容也适用于订阅

问题:

我正在使用cookie-session ( https://github.com/expressjs/cookie-session,但我认为这对于express-session中间件是一样的),当我的浏览器开始与我的服务器建立新连接时,ApolloServeronConnect钩子不会'没有req属性,也没有req.session等等......

我所能做的就是从分析该cookiewebSocket.upgradeReq.headers.cookieonConnect生命周期挂钩,但它似乎对我很哈克。

编码:

const { ApolloServer } = require('apollo-server-express')

const typeDefs = require('../src/graphql/types')
const resolvers = require('../src/graphql/resolvers')
const models = require('../src/models')

const apolloServer = new ApolloServer({
  typeDefs,
  resolvers,
  context: ({ req, connection }) => {
    // connection exists only on webSocket connection
    if (connection) { …
Run Code Online (Sandbox Code Playgroud)

session-cookies websocket express graphql apollo-server

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

Golang、postgresql、go-pg、UNION ALL 和 WITH

I\xe2\x80\x99m 使用 Golang、PostgreSQL 和 go-pg ( https://github.com/go-pg/pg )。

\n\n

我需要这个查询:

\n\n
WITH cte AS (\n    SELECT\n        "player"."id",\n        "player"."created_at",\n        "player"."note"\n    FROM\n        "players" AS "player"\n    ORDER BY\n        "amount" DESC,\n        "id"\n        LIMIT 5\n    ) ( SELECT * FROM cte ) UNION ALL\n    (\n    SELECT\n        "id",\n        "created_at",\n        CONCAT_WS ( \'|\', LAST_VALUE ( "created_at" ) OVER ( ), LAST_VALUE ( "id" ) OVER ( ) ) AS note\n    FROM\n        cte -- THIS IS CORRECT\n    LIMIT 1\n    )\n
Run Code Online (Sandbox Code Playgroud)\n\n

相反go-pg一直给我这个:

\n\n
WITH "cte" AS …
Run Code Online (Sandbox Code Playgroud)

sql postgresql union go go-pg

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

@urql/svelte,“在组件初始化之外调用的函数”如果不在 onMount 中

我正在尝试https://github.com/FormidableLabs/urql/tree/master/packages/svelte-urql人所做的令人惊叹的作品。

直到今天问题为止一切正常。

我正在使用下面的代码,它给了我这个错误:

Error: Function called outside component initialization
  at get_current_component (index.mjs:615)
  at getContext (index.mjs:648)
  at getClient (urql-svelte.mjs:55)
  at query (urql-svelte.mjs:81)
  at Players.svelte:41
Run Code Online (Sandbox Code Playgroud)

代码:

<script>
  import { query } from '@urql/svelte'
  import { myQuery } from './myQuery'

  let players
  let myVars

  function sleep (ms) {
    return new Promise((resolve) => setTimeout(resolve, ms))
  }

  $: (async () => {
    await sleep(2000) // this gives me the error; removing it make it work
    players = query({
      query: myQuery,
      variables: { ...myVars }, …
Run Code Online (Sandbox Code Playgroud)

javascript svelte svelte-component svelte-3 urql

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

当我使用 Typescript 投射内容时,为什么 Prettier 添加了这个分号?

我正在使用 Typescript 和 Prettier,每次我在函数 Prettier 的第一行中投射一些内容时,都会将分号作为第一个字符。

为什么?看来没有必要。我错了吗?

我读了基本原理,但仍然不明白为什么我们需要在那里放第一个分号。

Prettier 2.2.1 Playground 链接

--parser typescript
--no-semi
Run Code Online (Sandbox Code Playgroud)

输入:

function example() {
(this as MyType).method() // useless semicolon will be placed here
;(f as any).y = fy // the semicolon here is ok
return f
}
Run Code Online (Sandbox Code Playgroud)

输出:

function example() {
  ;(this as MyType).method() // useless semicolon here
  ;(f as any).y = fy // the semicolon here is ok
  return f
}

Run Code Online (Sandbox Code Playgroud)

预期行为:

不得放置第一个分号。

在 Prettier 存储库上提出了一个问题,但他们建议我在这里提问。

***更新:

如果我使用更漂亮的默认值,我也会遇到问题,请参阅此示例: …

typescript prettier

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