小编Ale*_*lex的帖子

为什么在Angular 2中捕获一个Observable后finally()不起作用?

我试图在每个以Angular 2结尾的请求中添加一个加载微调器,所以我扩展了Http服务,调用它为HttpService.在每个请求之后,我想在捕获错误后调用finally()函数,以便我可以停止加载微调器.

但是打字稿说:

[ts]属性'finally'在'Observable'类型中不存在.

import { AuthService } from './../../auth/auth.service';
import { Injectable } from '@angular/core';
import { Http, XHRBackend, RequestOptions, RequestOptionsArgs, Request, Response, Headers } from '@angular/http';

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';

@Injectable()
export class HttpService extends Http {

    constructor(
        backend: XHRBackend,
        options: RequestOptions,
        private authservice: AuthService
    ) {
        super(backend, options);
        this.updateHeaders(options.headers);
    }

    request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {
        return super.request(url, options)
            .catch((response: Response) => this.authError(response))
            .finally(() => {
                // ...
                /* Do something …
Run Code Online (Sandbox Code Playgroud)

angular

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

如何以一种好的方式在Golang中使用SQL NULL值和JSON?

Go类型喜欢Int64并且String不能存储空值,所以我发现我可以使用sql.NullInt64sql.NullString.

但是当我在Struct中使用它们,并使用json包从Struct生成JSON时,格式与我使用常规Int64String类型时的格式不同.

JSON有一个额外的级别,因为sql.Null***也是一个Struct.

有没有一个很好的解决方法,或者我不应该在我的SQL数据库中使用NULL?

sql json go

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

如何在Angular中解决相同的问题,在AngularJS中解决了ng-messages?

在AngularJS中有一个名为ng-messages的表单指令,它帮助我们实现它,以便不会同时显示所有表单错误.因此,例如,如果输入有3个错误:required,minlength,maxlength.然后只需要显示,在需要后有效,然后显示minlength.如果没有ng-messages,我们需要做一些非常复杂和丑陋的逻辑,以便只显示必需而不显示其余部分,同时还要考虑只有在窗体控件也脏/触摸且无效时才会显示错误.

在AngularJS中,这将是:

<div ng-messages="form.username.$error" ng-if="form.username.$touched || form.username.$dirty">
    <div ng-message="required">Please enter a username.</div>
    <div ng-message="minlength">Username must be at least 3 characters.</div>
    <div ng-message="maxlength">Username can't exceed 30 characters.</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们怎样才能以优雅的方式在Angular中实现这一目标?

angular

18
推荐指数
1
解决办法
3641
查看次数

如何在MySQL中使用JSON_EXTRACT并获取不带引号的字符串?

如果我有一个像这样的简单SELECT语句:

SELECT JSON_EXTRACT('{"username":"Alexander"}', '$.username');
Run Code Online (Sandbox Code Playgroud)

我希望它会返回Alexander,但它会返回"Alexander".我该如何摆脱报价?为什么这个函数甚至也会返回引号?

mysql

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

如何在Go中重写/重定向从http到https?

我已经提出了TLS并且它有效.我知道如何在nginx中从http重写为https,但我不再使用nginx了.我不知道如何在Go中正确地做到这一点.

func main() {

    certificate := "/srv/ssl/ssl-bundle.crt"
    privateKey := "/srv/ssl/mykey.key"

    http.HandleFunc("/", rootHander)
    // log.Fatal(http.ListenAndServe(":80", nil))
    log.Fatal(http.ListenAndServeTLS(":443", certificate, privateKey, nil))
}

func rootHander(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("To the moon!"))
}
Run Code Online (Sandbox Code Playgroud)

我怎么能以这种方式做到这一点?

go

16
推荐指数
2
解决办法
5539
查看次数

使用RWMutex代替Mutex有什么好处?

我不确定何时使用RWMutex以及何时使用Mutex.

如果您使用RWMutex而不是Mutex,如果您执行更多读取然后写入,您是否节省了资源?

我看到有些人不管他们做什么都会一直使用Mutex,有些人使用RWMutex并运行这些方法:

func (rw *RWMutex) Lock()
func (rw *RWMutex) Unlock()
func (rw *RWMutex) RLock()
func (rw *RWMutex) RUnlock()
Run Code Online (Sandbox Code Playgroud)

而不只是:

func (m *Mutex) Lock()
func (m *Mutex) Unlock()
Run Code Online (Sandbox Code Playgroud)

如果您节省了资源,那么如果您执行更多读取然后写入,那么您应该使用RWMutex吗?

go

14
推荐指数
2
解决办法
4208
查看次数

为什么在检查完请求后必须关闭请求的主体?

我已经看过几个例子,你从那里读r.Body,然后r.Body.Close()马上做一个延迟。如果我们不关闭它会发生什么?

假设我有一个http.Handler,在里面我像这样解码 r.Body 的内容:

func createFeedback(w http.ResponseWriter, r *http.Request) {
    // ... Some code ...
    f := feedback.New()
    if err := json.NewDecoder(r.Body).Decode(f); err != nil {
        return err
    }
    defer r.Body.Close()
    // ... Some more code ...
}
Run Code Online (Sandbox Code Playgroud)

为什么我们要关闭r.Body

go

11
推荐指数
1
解决办法
3343
查看次数

Linux CentOS 7上的Supervisord仅在使用root运行时才有效

我试图在后台运行一个进程作为deamon但它只有在我使用root作为用户时才有效.

这就是我做的.

在他们的网站上告知安装的主管

$ yum -y install python-setuptools

$ easy_install supervisor
Run Code Online (Sandbox Code Playgroud)

创建了配置文件夹

$ mkdir -p /etc/supervisor/conf.d
Run Code Online (Sandbox Code Playgroud)

使用默认设置填充

$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
Run Code Online (Sandbox Code Playgroud)

添加新用户

$ useradd gogopher
Run Code Online (Sandbox Code Playgroud)

在CentOS 7上让它自动启动我必须这样做

$ vim /usr/lib/systemd/system/supervisord.service
Run Code Online (Sandbox Code Playgroud)

添加了下面的代码

[Unit]                                                              
Description=supervisord - Supervisor process control system for UNIX
Documentation=http://supervisord.org                                
After=network.target                                                

[Service]                                                           
Type=forking                                                        
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf             
ExecReload=/usr/bin/supervisorctl reload                            
ExecStop=/usr/bin/supervisorctl shutdown                            
User=gogopher

[Install]                                                           
WantedBy=multi-user.target                                                  
Run Code Online (Sandbox Code Playgroud)

现在我可以启用它,以便它在重启时启动.一切正常.

$ systemctl enable supervisord

$ systemctl start supervisord

$ systemctl status supervisord
Run Code Online (Sandbox Code Playgroud)

编辑配置文件以包含conf.d文件夹中的文件

$ vim /etc/supervisor/supervisord.conf
Run Code Online (Sandbox Code Playgroud)

在文件末尾添加

[include]
files = /etc/supervisor/conf.d/*.conf
Run Code Online (Sandbox Code Playgroud)

添加一个简单的程序

$ vim …
Run Code Online (Sandbox Code Playgroud)

linux

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

在Angular 2中的rxjs中使用switchMap运算符时,我们是否必须取消订阅?

在Angular 2中,有一些您不需要取消订阅的可观察对象.例如http requests和activatedRoute.params.

Angular/RxJs什么时候应该取消订阅"订阅"

但是当我使用switchMap时会发生什么情况,例如activatedRoute.params,并且在switchMap内部我访问一个服务,该服务返回一个observable,如果以通常的方式订阅则需要取消订阅.

像这样的东西:

this.activatedRoute.params
    .switchMap((params: Params) => this.userService.getUser(+params['id']))
    .subscribe((user: User) => this.user = user);
Run Code Online (Sandbox Code Playgroud)

如果我在没有switchMap且没有activateRoute.params的情况下调用this.userService,我将不得不取消订阅.

// userService.getUser() takes in optional id?: number.
this.subscription = this.userService.getUser().subscribe(
    (user: User) => {
        this.user = user;
    }
 );
Run Code Online (Sandbox Code Playgroud)

然后......

this.subscription.unsubscribe();
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在其上使用switchMap并调用需要取消订阅的服务,是否需要取消订阅activatedRoute.params?

rxjs angular

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

Angular2中的装饰器@Input()和@Attribute()之间的主要区别是什么?

我已经看到@Attribute()通常在指令中用作构造函数中的参数,如下所示:

export class EqualValidator implements Validator {
    constructor( @Attribute(‘validateEqual’) public validateEqual: string) {}
    validate(c: AbstractControl): { [key: string]: any } {}
}
Run Code Online (Sandbox Code Playgroud)

和@Input()在这样的组件中使用:

export class UserProfile {
    @Input() user;
    constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

然后,在@Input()的情况下,您可以使用属性绑定将数据传递到模板中的这些变量.

这些装饰器之间的主要区别是什么?何时应该使用它们?

angular

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

标签 统计

angular ×4

go ×4

json ×1

linux ×1

mysql ×1

rxjs ×1

sql ×1