Я пытаюсь проверить наличие объекта в моей таблице AngularFire. У меня проблемы с возвратом субъекта, чтобы определить, существует ли файл.
/**
* Check if the Id exists in storage
* @param Id string | number Key value to check
* @returns Subject<boolean>
*/
public Exists(Id:string):Subject<boolean> {
const Status$:Subject<boolean> = new Subject<boolean>();
let RecordExists:boolean = false;
this.AfDb_.object<T>(`_Testing_/${Id}`).valueChanges()
.subscribe( (OneRecord:T) => {
if (OneRecord.Key_ !== undefined && OneRecord.Key_ !== null && OneRecord.Key_.length > 0) {
RecordExists = true;
}
})
;
Status$.next(RecordExists);
return Status$;
}
Это всегда возвращает неопределенное значение. Мои автоматические тесты также не пройдут.
it('should confirm a record exists in storage', fakeAsync( () => {
let Exists:boolean;
const Status$:Subject<boolean> = ServiceUnderTest.Exists('Good'); // This exists in Firebase
Status$.subscribe( (Result:boolean) => {
Exists = Result;
});
flushMicrotasks();
Status$.unsubscribe();
expect(Exists).toBeTrue();
}));
У меня есть доступ в Firebase к / Testing / Good, который является объектом со структурой Key_ и Name.
Модули из пакета. json
"@angular/fire": "^5.4.2",
"firebase": "^7.9.3",
Однако, если я просто попытаюсь вернуть результат, не обращаясь непосредственно к AngularFire, эти тесты сработают.
public Exists(Id:string):BehaviorSubject<boolean> {
const Status:BehaviorSubject<boolean | undefined> = new BehaviorSubject<boolean | undefined>(undefined);
Status.next(true);
return Status;
}