小编pen*_*ngz的帖子

Angular Material Table如何将对象传递给displayColumns而不是数组

我正在 Angular8 中使用 Material 表构建一个表。

我使用一个字符串数组来定义 displayColumns 并将每个数组值传递给 matColumnDef 指令。

这是正常工作。

TS

displayedColumns: any[] = ['username', 'firstname', 'lastname'];
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="table-container mat-elevation-z8">
  <table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
    <ng-container *ngFor="let column of displayedColumns;" [matColumnDef]="column">
      <th mat-header-cell *matHeaderCellDef> {{ column }} </th>
      <td mat-cell *matCellDef="let element"> {{ element[column] }} </td>
    </ng-container>
    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)

问题:是否可以将 displayColumns 定义为对象数组而不是字符串数组?

我想为列显示值设置不同的值,还可能有条件地设置一些其他列属性。

示例:注意displayColumns 是一个对象数组。这不起作用。

TS

  displayedColumns: any[] = [
    { name: 'username', display: 'User Name' },
    { name: 'firstname', …
Run Code Online (Sandbox Code Playgroud)

angular angular-material-table

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

NodeJS Express 如何转义 HTML 实体以用于显示目的

我正在 NodeJS 中使用 Express、Angular JS 和 Google App-Engine 数据存储构建一个 Web 应用程序。

我正在学习节点。我创建了一个在插入数据库之前“清理”(转义)用户输入的表单。我按照 MDN 网站上的 NodeJS 教程创建了以下代码:

//Trim and escape all inputs
req.sanitize('requester').escape();
req.sanitize('requester').trim();
req.sanitize('dataowner').escape();
req.sanitize('dataowner').trim();
req.sanitize('requested_filepath_list').escape();
req.sanitize('requested_filepath_list').trim();
Run Code Online (Sandbox Code Playgroud)

“requested_filepath_list”是 UNIX 文件路径的列表。

因此,当用户提交请求时,它会以“转义”格式存储在数据库中。

//Escaped data
&#x2F;top&#x2F;example&#x2F;test123.txt
Run Code Online (Sandbox Code Playgroud)

问题:如何“转义”数据以用于显示目的?

//Desired output
/top/example/test123.txt
Run Code Online (Sandbox Code Playgroud)

我尝试了 unescape 函数,但它似乎不起作用,它只是返回相同的输出。

let escape_str = '&#x2F;top&#x2F;example&#x2F;test123.txt';
let unescaped_str = unescape(escape_str);
console.log('unescaped_str: ' + unescaped_str);

//Output
unescaped_str: &#x2F;top&#x2F;example&#x2F;test123.txt

//Desired output
/top/example/test123.txt
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

Google Datastore 模拟器从本地数据库中删除数据

我有一个在本地机器 (Mac OSX 10.11.6) 上运行的本地数据存储模拟器实例。

我已经有一堆数据,但我想从本地数据库中删除所有数据,以从头开始。

但是,我已经尝试删除正在存储数据的目录(我认为的位置)。

启动模拟器时会出现此消息。

WARNING: Reusing existing data in [/Users/myusername/.config/gcloud/emulators/datastore].
Run Code Online (Sandbox Code Playgroud)

我删除了整个数据存储目录,当模拟器重新启动时,它似乎可以正确重新生成。但是,旧数据仍然存在。

rm -rf /Users/myusername/.config/gcloud/emulators/datastore
Run Code Online (Sandbox Code Playgroud)

我还确认我的 Node App 正在连接到本地模拟器。

myusername$ $(gcloud beta emulators datastore env-init)
myusername$ gcloud beta emulators datastore env-init
export DATASTORE_DATASET=projectname
export DATASTORE_EMULATOR_HOST=localhost:8081
export DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore
export DATASTORE_HOST=http://localhost:8081
export DATASTORE_PROJECT_ID=projectname
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-datastore

7
推荐指数
2
解决办法
2753
查看次数

Python通过POST发送JSON数组

我正在尝试创建一个执行以下操作的python脚本:

  • 解析CSV文件
  • 通过REST API将CSV文件发送到远程服务器

我的代码正在解析CSV文件并将其转换为JSON对象.

但是,当它导入到远程服务器时,只写入第一行.

问题:我是否需要循环并为每个行发送一个SEPARATE http请求?我觉得那太麻烦了.我的CSV文件有超过10,000行,这将在每日cron上运行.

问题:如何将其设置为在单个请求中导入所有行?

#Requests package for python import requests
import csv
import json
import requests

#Parse CSV file and convert to JSON

f = open('example_import_csv.csv', 'rU')
reader = csv.DictReader(f, fieldnames = ("u_date","u_product","u_serial_number"))
out = json.dumps([row for row in reader])
#Print output confirms that the JSON is formatted properly
print(">JSON" , out) 

#Set request parameters
url = 'xxxxx'
user = 'xxxxxx'
pwd = 'xxxxxx'

#Set proper headers
headers = {"Content-Type":"application/json","Accept":"application/json"}

#data=out contains the JSON object …
Run Code Online (Sandbox Code Playgroud)

python csv rest post json

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

NodeJS sequelize auto generate models and run migrations SQL syntax error

I am building a new NodeJS application with MySQL. I need to use the existing database schema. I have a mysql dump file that is loaded into the database (in a docker container). I am trying to generate models and migrations automatically and then run the migrations successfully. I am able to generate the models and migrations, however there is a SQL syntax error when running the generated migrations.

Here are the relevant versions:

Node10-alpine

"mysql": "^2.17.1",
"mysql2": "^1.6.5",
"sequelize": …
Run Code Online (Sandbox Code Playgroud)

mysql migration model node.js sequelize.js

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

角材料垫标签可访问性

我有一个带有文本输入控件的 mat-form-field。我有一个 mat-label 并且我还attr.aria-label直接在 input 元素上放置了一个 aria-label 属性。

mat-label足以本身屏幕阅读器?是attr.aria-label必要的还是多余的?

<mat-form-field appearance="outline" floatLabel="always">
<mat-label>Username</mat-label>
<input attr.aria-label="Username" formControlName="Username" matInput>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

同样的问题也适用于 mat-select 控件。

<mat-form-field appearance="outline" floatLabel="always">
  <mat-label>Cars</mat-label>
  <mat-select formControlName="Car">
    <mat-option *ngFor="let car of cars" [value]="car.name">
    {{car.name}}
    </mat-option>
  </mat-select>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

accessibility wai-aria angular

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

Angular Material 表单控件以红色突出显示,即使是原始的

我正在 Angular 8 中使用 Material 和 Reactive Forms 构建一个应用程序。我有一个包含 ItemID、Title 和 Description 字段的反应式表单。

ItemID 字段旁边有一个搜索按钮,用于发送 HTTP 请求以从外部 API 获取数据。这一切正常。但是,在单击搜索按钮并返回响应后,验证会以红色突出显示 Title 和 Description 字段,即使这些字段尚未被触及并且是原始的。由于尚未触及这些字段,因此不应以红色突出显示它们。

下面是应用于窗体控件的类,当它以红色突出显示时,即使它仍然没有被触及和原始。

mat-form-field ng-tns-c9-58 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-invalid mat-form-field-invalid
Run Code Online (Sandbox Code Playgroud)

TS组件

  constructor(
    private fb: FormBuilder
  ) { }

// Initialize Item Detail form
this.itemDetailForm = this.fb.group({
  Item: this.fb.group({
    ItemID: [null],
  }),
  Title: [null, Validators.compose([
    Validators.required,
    Validators.maxLength(10),
  ])],
  Description: [null, Validators.compose([
    Validators.required,
    Validators.maxLength(10),
});
Run Code Online (Sandbox Code Playgroud)

HTML 组件

<form [formGroup]="itemDetailForm" (ngSubmit)="onSubmit()">
  <div formGroupName="Item">
    <mat-form-field appearance="outline" floatLabel="always">
      <mat-label>Item …
Run Code Online (Sandbox Code Playgroud)

validation angular-material angular

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

Javascript 验证以逗号分隔的电子邮件地址列表

我正在使用 ServiceNow,需要验证一个文本框,该文本框将接受以逗号分隔的电子邮件地址列表。

电子邮件地址列表位于变量中group_members

验证仅适用于第一个电子邮件地址。尽管我已经使用有效地址列表进行了测试,但列表中的第二个电子邮件地址显示为无效。例如:

Testa@example.com, testb@example.com

testa将显示为有效,但testb将无效。我知道这不是正则表达式,因为只要它是列表中的第一个,相同的电子邮件地址就会返回有效。我认为循环数组有问题,或者逗号分隔列表被分割到数组的方式可能有问题。
你能检查一下我的逻辑,看看哪里出了问题吗?

var group_members = g_form.getValue('u_group_members');
var member_split = group_members.split(',');

for (var n = 0; n < member_split.length; n++) {
  var member_info = member_split[n];
  var validRegExp = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

    if (member_info.search(validRegExp) == -1) {
        g_form.showFieldMsg('u_group_members', "Group Members contains an invalid email address. " , 'error');
    }
    else if (member_info.search(validRegExp) == 0) {
        g_form.showFieldMsg('u_group_members', "Group Members email addresses are valid");
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript email validation list

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

具有OR条件的Google Datastore过滤器

我正在使用带有数据存储数据库的Google App Engine上的NodeJS。

我正在使用复合查询过滤器,只需要一个基本的“或”条件。

示例:查询任务具有完成=假或优先级= 4

const query = datastore.createQuery('Task')
  .filter('done', '=', false) //How to make this an OR condition?
  .filter('priority', '=', 4);
Run Code Online (Sandbox Code Playgroud)

但是,根据文档

Cloud Datastore当前仅本地支持将过滤器与AND运算符组合在一起。

在不运行两个完全独立的查询然后合并结果的情况下,实现基本OR条件的好方法是什么?

更新

在另一篇文章中详细描述了我的解决方案。由于我仍在学习NodeJS,因此对解决方案改进的任何反馈将不胜感激。

google-app-engine node.js google-cloud-datastore

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

将JSON查询条件转换为MongoDB / Mongoose操作

我在客户端的Angular 8和NodeJS 12的服务器端使用MongoDB 4 / Mongoose 5构建应用程序。

我有一个由Angular查询构建器模块以JSON格式生成的查询。JSON对象将通过POST请求发送到后端。

问题:如何将JSON查询转换为MongoDB运算符以执行数据库查询?

这是由查询生成器插件生成的简单查询的示例。请注意“嵌套” AND / OR条件的多个级别的要求。

{
  "condition": "and",
  "rules": [
    {
      "field": "Brief_D_Reactiedatum",
      "operator": "!=",
      "value": "Eventtoets_Fn"
    },
    {
      "condition": "or",
      "rules": [
        {
          "field": "Alleen_AO",
          "operator": "=",
          "value": "Parkeerreden"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js

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