小编Nik*_*hev的帖子

如何修复 Angular 单元测试中的“错误:没有名称的表单控件的值访问器”?

我无法测试使用带有 ngModel 的自定义组件的组件

HTML 代码如下所示(在下面的 repro 中查看更多信息)

<custom-control name="formCode" [(ngModel)]="testValue"></custom-control>
Run Code Online (Sandbox Code Playgroud)

该代码在我的应用程序中运行,但在我的测试中失败并出现以下错误

Uncaught Error: Uncaught (in promise): Error: No value accessor for form control with name: 'formCode'

错误:没有名称的表单控件的值访问器:'formCode'

测试是用茉莉花运行的

我尝试了不同的导入,但似乎没有一个能解决我的问题

重现代码在这里:https : //stackblitz.com/edit/angular-test-ng-model

unit-testing jasmine karma-jasmine angular-ngmodel angular

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

在 AWS Elastic Beanstalk 中使用 SSM 参数存储

我正在使用 AWS Elastic beanstalk,想要为不同的环境配置不同的 ENV var。我发现的唯一方法是使用 ebextensions,但是如果我将同一个数据包部署到多个环境,则在 ebextension 中设置的环境变量无法被覆盖。听说过 SSM 参数存储,但无法找到与 Elastic Beanstalk 一起使用的方法。

据我发现,SSM 参数存储可以为 EC2 实例执行此操作。我不想每次更新一个环境变量时都重新启动 EC2 实例。还考虑编写一个脚本,从 SSM 获取值并更新 ebextentsions 中的环境变量。但这似乎只是一种黑客攻击,而不是正确的解决方案,需要检查可能失败的场景

amazon-elastic-beanstalk aws-parameter-store

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

Angular - 如何从现有数组启动 FormArray?

我想用 FormArray 创建一个可编辑的表格。

为此,我有results在表中呈现的属性。

用 FormArray 数据初始化它的正确方法是什么?

results: Array;
tableForm: FormGroup;

ngOnInit(private fb: FormBuilder) {
  this.tableForm = this.fb.group({
    arrayForm: this.fb.array([])
  });
}
Run Code Online (Sandbox Code Playgroud)

forms datatable angular formarray

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

Cypress:根据任务结果设置变量

我需要从 cypress 场景开始期间发送的电子邮件中检索 url。

等待电子邮件并检索其中的 url 是一项异步任务,因此我创建了一个名为“readMail”的 cypress 插件:它将电子邮件地址作为输入,等待 gmail api 实际收到一封电子邮件,其收件人是此地址,然后阅读邮件并返回解析包含在电子邮件正文中的 url 的承诺。这个过程工作正常,因为来自插件的日志确实正确显示了提取的 url。

我的问题是使其extractedUrl可用于以后用作参数,例如cy.visit(extractedUrl):在 的主体之外task(...).then(...),变量仍未设置。

这是代码:

it('should generate correct email', () => {
    const recipientEmail: string = 'some@email.com';
    const extractedUrl:string = '';

    // ....scenario generating a email to 'some@email.com'.....

    cy.task('readMail', recipientEmail) // plugin logs "https://some.url.com" after a few seconds
    .then((result:any) => {
        extractedUrl= result;
        console.log(result); // logs "https://some.url.com" in the terminal
        cy.log("1:" + extractedUrl); // logs "1:https://some.url.com" in cypress UI
    });
    cy.log("2:"+ …
Run Code Online (Sandbox Code Playgroud)

javascript task promise typescript cypress

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

类验证器不验证数组

我无法让类验证器工作。似乎我没有使用它:一切正常,就好像我没有使用类验证器一样。当发送带有格式不正确正文的请求时,我没有任何验证错误,尽管我应该。

我的 DTO:

import { IsInt, Min, Max } from 'class-validator';

export class PatchForecastDTO {
  @IsInt()
  @Min(0)
  @Max(9)
  score1: number;

  @IsInt()
  @Min(0)
  @Max(9)
  score2: number;
  gameId: string;
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

@Patch('/:encid/forecasts/updateAll')
async updateForecast(
    @Body() patchForecastDTO: PatchForecastDTO[],
    @Param('encid') encid: string,
    @Query('userId') userId: string
): Promise<ForecastDTO[]> {
  return await this.instanceService.updateForecasts(userId, encid, patchForecastDTO);
}
Run Code Online (Sandbox Code Playgroud)

我的引导程序:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(PORT);
  Logger.log(`Application is running on http://localhost:${PORT}`, 'Bootstrap');
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)

我找不到问题所在。我错过了什么?

arrays validation class-validator nestjs

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

从命令行运行 NestJS 脚本

我希望能够运行一个使用 NestJS 框架解析 XML 文件的脚本来进行概念验证,但我不知道该怎么做。

scripts在里面创建了一个目录/src,并将script.ts初始的 console.log 放在那里。如何在该文件中运行命令?我应该将 script.ts 文件更改为纯 javascript 而不是 typescript,然后运行 ​​node myscript.ts 吗?这种方式的正确做法是什么?

command typescript nestjs

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

无版本控制的 AWS S3 复制

我已在一个帐户中启用了 AWS S3 复制,并且希望将相同的 S3 数据复制到另一个帐户,一切正常。但我不想使用 S3 版本控制,因为它会产生额外的成本。

那么有没有其他方法来适应这种情况呢?

amazon-s3 amazon-web-services

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

为什么 Post 请求中的 @Body() 不能正常工作?[Nest.js]

我开始学习 Nest.js,所以我正在学习 Academind 教程(链接)。

当我尝试body使用请求中的@Body()装饰器获取变量时,我的代码未按预期工作POST。在这部分代码之后products.controller.ts

@Post()
async addProduct(@Body() body: Product) {
  console.log(body);
  const generatedId = this.productService.insertProduct(body.title, body.description, 5.99);
  return generatedId;
}
Run Code Online (Sandbox Code Playgroud)

在终端中,输出只是一个空对象: {}

我已经搜索了其他示例以了解如何正确执行此操作。我在 DigitalOcean中找到了一个教程,它们也在@BodyPOST 请求中使用;他们在教程的结尾留下了一个带有示例的存储库。这个例子既不适合我。

我只是addBook()book.service.ts档案中的功能做了一个小改动,用于返还新书而不是所有书

addBook(book): Promise<any> {
    return new Promise(resolve => {
        this.books.push(book);
        // resolve(this.books);
        resolve(book);
    });
}
Run Code Online (Sandbox Code Playgroud)

我从 Postman 执行以下 POST 请求,但响应是一个空对象。

来自邮递员的 POST 请求

除了 POST 请求之外,所有其他 HTTP 请求都运行良好。

任何想法代码可能有什么问题?提前致谢。

nestjs

5
推荐指数
2
解决办法
7421
查看次数

NestJS Fastify 身份验证

所以我用 Fastify 替换了 ExpressJS,但我的问题是 Nest-Passport 不支持 fastify,我们有 Nest-Passport 的替代品吗?或者关于如何使用令牌保护nestJS中的RestAPI的任何解决方案?

passport.js nestjs fastify nestjs-fastify

5
推荐指数
2
解决办法
3763
查看次数

如何在AWS Step Functions中实现手动审批?SWF 和 Step Functions 之间推荐的工作流引擎是什么?

Step Functions 现在支持回调功能以支持手动批准。我想知道任务令牌是如何生成的,以及我们是否可以传递自己的任务令牌字符串,以便我们不需要存储它来标记任务通过/失败。

此外,对于需要多个客户端交互才能进入下一个状态的工作流程,建议使用 Step Functions 或 SWF(及其信号)。

用例:我在工作流程中有多个步骤,如果计时器达到 6 个月,或者如果在这 6 个月内用户实际批准,则我们需要执行失败场景,那么工作流程需要执行到通过的场景。

workflow amazon-web-services amazon-swf aws-step-functions

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