小编Jon*_*las的帖子

Bash/Docker exec:从容器内部重定向文件

我无法弄清楚如何从Docker容器中读取文件的内容.我想将SQL文件的内容执行到我的PGSQL容器中.我试过了:

docker exec -it app_pgsql psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql
Run Code Online (Sandbox Code Playgroud)

我的应用程序已安装/usr/src/app.但是我收到了一个错误:

bash:/usr/src/app/migrations/*.sql:没有这样的文件或目录

似乎Bash将此路径解释为主机路径,而不是客户路径.实际上,两次执行命令非常有效:

docker exec -it app_pgsql
psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql
Run Code Online (Sandbox Code Playgroud)

我认为这更像是Bash问题而不是Docker问题,但我仍然被卡住了!:)

bash docker

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

PostgreSQL:重复键值违反了UPDATE命令的唯一约束

在执行UPDATE查询时,我们收到以下错误消息:

ERROR:  duplicate key value violates unique constraint "tableA_pkey"
DETAIL:  Key (id)=(47470) already exists.
Run Code Online (Sandbox Code Playgroud)

但是,我们的UPDATE查询不会影响主键.这是一个简化版本:

UPDATE tableA AS a
SET
    items = (
        SELECT array_to_string(
            array(
                SELECT b.value
                FROM tableB b
                WHERE b.a_id = b.id
                GROUP BY b.name
            ),
            ','
        )
    )
WHERE
    a.end_at BETWEEN now() AND  now() - interval '1 day';
Run Code Online (Sandbox Code Playgroud)

我们确保主键序列已经同步:

\d tableA_id_seq
Run Code Online (Sandbox Code Playgroud)

哪个产生:

    Column     |  Type   |          Value           
---------------+---------+--------------------------
 sequence_name | name    | tableA_id_seq
 last_value    | bigint  | 50364
 start_value   | bigint  | 1
 increment_by  | bigint …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3

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

从 API Gateway 实现速率限制标头?

我正在使用 AWS API Gateway 实施 API。我正在使用本机 API 密钥和使用计划来限制客户端速率。然而,我想将数据使用信息添加到我的 API 响应中,例如X-RateLimit-RemainingX-RateLimit-Reset标头。

我向 AWS 支持询问是否没有任何本机实现,因为这是(至少在我看来)一个非常常见的要求。那没有。

然后,我研究了如何使用对AWS 使用 API 的一些调用来实现这些标头(即使我不太喜欢为每个请求添加 API 调用开销)。但我需要 API 密钥 ID,而不是 API 密钥值(我的请求中只有一个)。根据这个AWS线程,可能不会有任何通过API键值查找的方法。

这一步我只能想象两种解决方案:

  • 循环遍历所有 API 密钥的列表以找到正确的密钥。但这不会扩大规模。
  • 在我们这边处理速率限制数据(例如使用 Redis 服务器来跟踪所有调用)。但这需要大量工作,并使我们面临不同步的高风险。

您如何在 API 响应中共享数据使用情况?我错过了什么吗?

amazon-web-services aws-api-gateway

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

赛普拉斯自定义TypeScript命令不是一个功能

我在TypeScript中实现了一个自定义赛普拉斯:

// support/commands.js
const login = () => {
    console.log('Logging in...');
};

Cypress.Commands.add('login', login);

declare namespace Cypress {
    interface Chainable {
        login: typeof login;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试着用它来调用它:

describe('Login Scenario', () => {
    it('should allow a user to login', () => {
        cy.visit('/');
        cy.login();
    });
});
Run Code Online (Sandbox Code Playgroud)

然而,似乎没有建立命令:

TypeError:cy.login不是一个函数

如果我用纯JavaScript编写命令(删除命名空间声明并更新调用(cy as any).login();,它可以工作.

我错过了什么?

typescript cypress

3
推荐指数
3
解决办法
1843
查看次数