Что касается отказа от подписки, вы должны взглянуть на шаблон takeUntil
, изложенный в в этом ответе . Это предпочтительный способ отписаться и избежать утечек памяти. Вы можете изменить свой код на что-то вроде этого:
...
export class UploadComponent implements OnInit, OnDestroy {
private ngUnsubscribe = new Subject();
...
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
deleteFile(id: any) {
if (window.confirm("Are you sure you want to delete this file?")) {
this.fileCabinetService.deleteFile(id)
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe(
res => {
...
},
error => {
...
}
);
}
}
Сказав , если вы подписываетесь на @angular/common/http
наблюдаемой, вам не нужно отписываться, потому что http
вызов службы complete()
при возврате данных. Посмотрите на эту реализацию в xhr back-end для деталей:
if (response.ok) {
responseObserver.next(response);
// TODO(gdi2290): defer complete if array buffer until done
responseObserver.complete();
return;
}
Так что, для @angular/common/http
запросов, не беспокойтесь об этом. Для большинства других следуйте шаблону takeUntil
.
Я предпочитаю преобразовывать хэш-код в Шестнадцатеричную Строку в этом случае, varchar (64) добьется цели или varchar (66), если Вам нравится"0x
"-префикс. Таким образом намного легче выдержать сравнение вручную или (ре) установленные значения, к которым Вы имеете скопировать/вставить от других мест. например, Вы потеряли своего администратора-PW, и хотят сбросить его через SQL...
Должен произвести 32-байтовое значение (256 битов), таким образом, двоичный файл (32) должен работать.
Атрибут "Хеша" класса SHA256Managed является массивом байтов, и HashSize составляет 256 битов, таким образом, я полагаю, что двоичный файл (32) был бы самым простым.
Вы могли, вероятно, также поместить его в varchar поле с помощью ToBase64Transform. Я не абсолютно знаком с Алгоритмом Base64, но кажется, что Вы должны были бы, вероятно, нуждаться по крайней мере в 43 символах для представления числа на 256 битов в основе 64. IIRC Base64 использует пару дополнительных символов, таким образом, я, вероятно, поместил его в varchar (50) только для сейфа.
SHA-256 имеет вывод на 256 битов
256 битов = 32 байта
Так попробуйте varbinary (32)