小编ufo*_*ttu的帖子

javascript forEach 管理异常

我有一个 forEach 循环,用于在将数据推送到数组之前检查是否存在条件:

allow(id, perm, arr) {
  const data = { "userId": id, "permissionId": perm };

  arr.forEach(key => {
    if (id !== key.userId) {
      throw new Error('id does not exists');
    } else {
      if (perm === key.permissionId) {
        throw new Error('perm exists in this id');
      } else {
        arr.push(data);
      }
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

原来的数组arr是这样的:

[{"userId": 1,"permissionId": 1},
 {"userId": 2,"permissionId": 1},
 {"userId": 3,"permissionId": 0},
 {"userId": 4,"permissionId": 0}]
Run Code Online (Sandbox Code Playgroud)

如果我使用console.log()所有作品,但是当我抛出错误时,执行会停止,但是如何在不停止循环的情况下管理异常?

javascript testing error-handling foreach throw

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

使用BehaviorSubject重新加载时角度数据丢失

我正在使用数据服务将用户数据发送到应用程序,并在标题组件中显示用户名。如果我使用登录组件登录我的应用程序,则正确显示了用户名,但是当我重新加载页面时,用户数据消失了。

登录时重新加载之前

在此处输入图片说明 在此处输入图片说明

重装后

在此处输入图片说明 在此处输入图片说明

用户数据来自使用BehaviorSubject的数据服务:

数据服务

export class DataService {

  private userSource = new BehaviorSubject({});
  currentUser = this.userSource.asObservable().pipe(distinctUntilChanged());

  constructor(private injector: Injector, private api: UtentiApiService) { }

  getUser() {
    return this.currentUser;
  }

  getUserFromToken() {
    const authService = this.injector.get(AuthService);
    const token = authService.getToken();
    const userIdToken = jwt_decode(token);
    // console.log(userIdToken);
    return this.api.getUtente(userIdToken.userId);
  }

  getPermissionsFromToken(): Observable<any> {
    const authService = this.injector.get(AuthService);
    const token = authService.getToken();
    const userIdToken = jwt_decode(token);

    return of(userIdToken.permArr);
  }
  changeUser(user: object) {
    this.userSource.next(user);
  }

}
Run Code Online (Sandbox Code Playgroud)

在标头组件中,我使用该服务:

header.component.ts

export class HeaderComponent implements OnInit …
Run Code Online (Sandbox Code Playgroud)

service reload data-loss behaviorsubject angular

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

尝试从 docker 容器连接到本地 mysql 数据库时连接被拒绝

我在从 docker 容器连接本地 mysql 数据库时遇到问题。我在容器中使用 docker-compose 和两个服务,数据库不在容器上

我有这个 docker-compose 文件:

version: '2'
services:
    web:
        build:
            context: ./
            dockerfile: web-dev.dockerfile
        volumes:
            - ./:/var/www
        ports:
            - "8080:80"
        links:
            - app
        network_mode: "bridge"
        dns:
            - 10.0.50.6
    app:
        build:
            context: ./
            dockerfile: app-dev.dockerfile
        volumes:
            - ./:/var/www
        network_mode: "bridge"
        dns:
            - 10.0.50.6
Run Code Online (Sandbox Code Playgroud)

web容器与此Dockerfile Nginx上的服务:

FROM nginx:1.10

ADD ./vhost.dev.conf /etc/nginx/conf.d/default.conf

WORKDIR /var/www
Run Code Online (Sandbox Code Playgroud)

和这个配置文件:

server {
    listen 80;

    index index.php index.html;
    root /var/www/formapp/public;

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info …
Run Code Online (Sandbox Code Playgroud)

mysql host docker docker-compose lumen

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

mongodb错误mongoose不要在数组$ pushAll中推送对象

我有一个简单的用户和发布模型的应用程序,

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/assoc", {useMongoClient:true});
mongoose.Promise = global.Promise;

//Post
var postSchema = new mongoose.Schema({
    title: String,
    content: String
});
var Post = mongoose.model("Post", postSchema);

//User
var userSchema = new mongoose.Schema({
    email: String,
    name: String,
    posts: [postSchema]
});

var User = mongoose.model("User", userSchema);
Run Code Online (Sandbox Code Playgroud)

我之前创建了一个用户(名称:"gino")并将帖子推送到:

// var newUser = new User({
//     email: "a.b@c.it",
//     name: "gino"
// });
//
// newUser.posts.push({
//     title: "gino's post",
//     content: "this is content"
// });
//
// newUser.save(function (err, user) {
// …
Run Code Online (Sandbox Code Playgroud)

javascript arrays push mongoose mongodb

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

使用 Array.reduce() 时的 Angular Typescript 类型错误

假设我有两个类型对象数组(相同类型),我想合并它们,检查一个对象是否已经存在,然后将旧的和新的数量相加并返回一个具有更新值的新数组

型号

class Ingredient {
  constructor(public name: string, public amount: number){ }
}
Run Code Online (Sandbox Code Playgroud)

数组

  private ingredients: Ingredient[] = [
    new Ingredient('farina', 500),
    new Ingredient('burro', 80),
    new Ingredient('uccellini', 5)
  ];

  private newIngredients: Ingredient[] = [
    new Ingredient('uova', 5),
    new Ingredient('pancetta', 80),
    new Ingredient('uccellini', 8)
  ];
Run Code Online (Sandbox Code Playgroud)

当我尝试创建一个方法来检查和合并数组时,我在开始编写代码之前记录了一个错误!:

addIngredients(newIngredients: Ingredient[]) {

  this.ingredients
    .concat(this.newIngredients)
    .reduce((result, curr) => {

    });
}
Run Code Online (Sandbox Code Playgroud)

这是错误

error TS2345: Argument of type '(result: Ingredient, curr: Ingredient) => 
void' is not assignable to parameter of …
Run Code Online (Sandbox Code Playgroud)

javascript arrays reduce typescript angular

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

删除记录后角度刷新表,使用材质表和rest api

我有一个带有可扩展行的材质表(https://material.angular.io/components/table/examples),并且我想管理表本身的删除,因此我创建了一个带有触发删除事件的函数的删除按钮。api有效,记录被正确删除,但删除后表没有刷新,我想实现这种行为。这里有一个带有假 API 的 stackblitz:https ://stackblitz.com/edit/angular-comzph

我尝试在删除函数中调用 ngOnInt 并导航回同一路线,但没有任何反应......

deleteCustomer(id) {
 this.api.deleteCustomer(id)
  .subscribe(res => {
    alert(`cliente rimosso`);
    // TODO fix reload list after delete
    // this.router.navigate['/clienti'];
    this.ngOnInit();
  }, (err) => {
    console.log(err);
  }
 );
}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用这个解决方案,但不起作用。我尝试使用 ngOnChange 和 ngOnDestroy,但也不起作用......

有人可以帮助我吗?

rest refresh http-delete angular-material angular

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

使用颜色选择器设置角度材质主题颜色

我有一个应用程序,文件中有多个材质主题theme.scss

// Light theme
$light-primary: mat-palette($mat-grey, 200, 500, 300);
$light-accent: mat-palette($mat-brown, 100);
$light-warn: mat-palette($mat-deep-orange, 200);

$light-theme: mat-light-theme($light-primary, $light-accent, $light-warn);

.light-theme {
  @include angular-material-theme($light-theme)
}

// Red theme
$red-primary: mat-palette($mat-red, 700, 500, 300);
$red-accent: mat-palette($mat-amber, 200);
$red-warn: mat-palette($mat-brown, 200);

$red-theme: mat-light-theme($red-primary, $red-accent, $red-warn);

.red-theme {
  @include angular-material-theme($red-theme)
}
Run Code Online (Sandbox Code Playgroud)

如果我想更改应用程序的主题,我可以通过切换现有主题来实现。现在我想添加一个功能,让用户使用颜色选择器创建自定义主题,在应用程序中设置 $primary、$accent 和 $warn 颜色,然后在数据库中发布新创建的样式。

我正在使用ngx-color-picker设置颜色,但我不知道如何设置自定义主题并在用户访问时使用它。

我正在使用 Angular 6 和材质 2

感谢帮助

customization themes color-picker angular-material angular

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