小编Mis*_*Guy的帖子

我应该使用async/await还是promises?

我正在寻找关于在nodeJS应用程序中使用什么的答案.

我有代码处理我对mssql的通用dB访问.这段代码是使用async函数编写的,然后我使用了一个承诺调用该函数,一切正常.

随着我的应用程序越来越大,代码越来越大,我计划将一些逻辑转移到函数中然后调用它们.

所以我的问题是:使用async/await和promises的组合是否有缺点,或者它真的无关紧要?

Async/await使编写更易读的代码变得更容易,因为在返回内容之前我必须读取和写入多个db,我需要其中一些结果.

所以问题是什么是更好的方法?异步/等待在dB层上设置并且无法更改逻辑层async/await将允许我在函数调用上执行异步/等待,或者如果我继承逻辑,那么我在函数调用中遇到了承诺.

因此,除了能够编写更清晰的代码之外,如果一个人比另一个人有更多的优势,我希望有人可以给我更多的见解.

javascript node.js promise async-await

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

Winston / Morgan 日志记录避免重复条目

我刚刚实施了 Winston Logging,它按预期工作,但我遇到了一些我无法找到答案的问题。

据我所知,winston 的工作方式,设置的日志级别以及使用优先级以下的任何内容,例如出错时,它还将包括信息日志等。 有没有办法创建特定的日志级别,让我们称之为 HTTP或 db,我只将 http 或 db 事件记录到其中,而它们最终不会出现在组合文件或控制台中?

node.js winston morgan

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

如何避免 Angular 材料中出现额外的 mat-form-field-underline

我在查找为什么在使用组件时会出现额外的 mat-form-field-underline 时遇到问题。

我的页面使用此标记:

<mat-form-field class="col-md-6">
        <app-mat-select-all 
            [data]="tractList$"
            formControlName="tractList"
            fieldName="name"
            [multiselect]=true
            labelText="Tract List"
            idField="guid"
            >
        </app-mat-select-all>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

我的自定义组件具有以下模板代码

<form novalidate [formGroup]="form">
    <mat-form-field>
    <mat-label>{{labelText}}</mat-label>
    <mat-select  #select [multiple]="multiselect" [formControl]="selectField" >
      <div class="select-all">
          <mat-checkbox *ngIf="multiselect" [(ngModel)]="allSelected"
                          [ngModelOptions]="{standalone: true}"
                          [indeterminate]="isIndeterminate()"
                          [checked]="isChecked()" 
                          (click)="$event.stopPropagation()"
                          (change)="toggleAllSelection($event)">{{text}}</mat-checkbox>
      </div>
      <mat-option *ngFor="let item of data" [value]="item[idField]">
        {{item[fieldName]}}
      </mat-option>
    </mat-select>
    </mat-form-field>
    </form>
Run Code Online (Sandbox Code Playgroud)

在渲染的页面上看起来像这样

在此输入图像描述

当我将以下行添加到我的父样式表中时,所有 mat-form-field-underlines 都消失了,这不是我想要的。如果我删除自定义组件中的 mat-form-field,我只会得到一行,但 mat-form-field-underline 的对齐方式与页面上的其他组件不对齐。所以我需要找到一种方法,只针对第二个下划线才能删除。

<mat-form-field class="col-md-6">
        <app-mat-select-all 
            [data]="tractList$"
            formControlName="tractList"
            fieldName="name"
            [multiselect]=true
            labelText="Tract List"
            idField="guid"
            >
        </app-mat-select-all>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

这是一个 stackblitz 示例,演示了第二个下划线StackBlitz 示例的此问题

这是我检查时的代码,似乎由于某种原因在 mat-form-field 内有一个 mat-form-field。不知道为什么? …

javascript css typescript angular-material angular

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

SQL Server排序奇数ASC和偶数DESC

我想知道SQL Server中是否有一种方法可以对包含varchar列中数字的表进行排序.我把这个号码(在我的案例中为House Numbers)投入Int并使用

order by cast([sano]%2 as int), cast([sano] as Int)
Run Code Online (Sandbox Code Playgroud)

实际上创造了2,4,6,8 ......,1,3,5,7,9等的输出.但我需要得到像2,4,6,8..9,7,5,3,1这样的输出,所以即使是asc然后奇怪的是desc.

sql t-sql sql-server select sql-order-by

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

如何确保在 2 个或更多 Observable 返回数据之前不执行函数?

我有一个使用一些自定义组件的 Angular Reactive 表单。它有一些基本的表单字段以及一个 Froala 编辑器。我使用自定义下拉列表自定义编辑器,这些下拉列表通过 observable 从后端获取值。这是我的问题开始的地方。我有一个名为的函数transformArr(),它看起来像这样

transformArr() {
  console.log('Transform Contact Options')
  this.contactFields$ = this.mailTemplateService
    .templateLookup(this.guids.MAIL_TEMPLATE_CONTACT_FIELDS);
  this.contactFields$.subscribe(res => {
    this.contactFieldsOption = new Object() as {
      [key: string]: string
    };

    for (const each of res) {
      this.contactFieldsOption[each.value.replace('""', '&#34&#34')] = each.name;
    }
  })

  console.log('Transform Personal Options')
  this.personalFields$ = this.mailTemplateService
    .templateLookup(this.guids.MAIL_TEMPLATE_CONTACT_FIELDS);
  this.personalFields$.subscribe(res => {
    this.personalFieldsOption = new Object() as {
      [key: string]: string
    };

    for (const each of res) {
      this.personalFieldsOption[each.value.replace('""', '&#34&#34')] = each.name;
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

只有当两者都完成时我才想运行 this.initializeEditor();

observable angular

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

如何在Angular中将空数组分配给Observable

我在窗体中有一个下拉框,这些框通过一个自定义组件使用,我通过将GUID的查找值粘贴到该组件来用数据填充它们。所有工作都按预期进行,我得到了我的数据等。但是现在,我需要根据用户的选择也能够清除下拉菜单中的数据。假设用户在第一个下拉式水果中进行选择,基于此,我想在选择中提供所有我没有问题的水果。但是现在用户回去,将其选择从水果更改为苏打水,这意味着先前选择的苹果不再有效,需要清除。所以我正在寻找一种简单的方法来清除下拉列表中的所有值。

使我的数据进入下拉菜单

socialOptions$: Observable<Array<IServerDropdownOption>>;
ngOnInit() { 
    this.socialOptions$ = this.guidService.fetchAll(this.guids.SOCIAL_LABELS).pipe(shareReplay());
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试this.countryOptions $ = []时出现此错误 在此处输入图片说明

typescript angular

0
推荐指数
1
解决办法
36
查看次数

我如何在 angular 中使用 *ngif 来更改 div 类

我需要根据某些条件更改 div 的类。我如何使用 *ngif 来实现这一目标?我使用此代码在我的模板中运行良好。

<div *ngIf="quickSearchTypeOptionConfigId && isGridReady" class="col-md-4 m-auto">
Run Code Online (Sandbox Code Playgroud)

但是我在这个 div 上面有一个 div,它目前是

<div class="col-md-8 m-auto"> 
Run Code Online (Sandbox Code Playgroud)

我需要的是如果*ngIf="quickSearchTypeOptionConfigId && isGridReady" true 那么

<div class="col-md-8 m-auto">
Run Code Online (Sandbox Code Playgroud)

别的

<div class="col-md-12 m-auto">
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,然后做 2 *ngif 的

angular

-1
推荐指数
1
解决办法
3531
查看次数