Я создал проект, используя Angular 7, Firestore и ngRx.
Я пишу свои эффекты, а метод set () не работает должным образом.
Когдаиспользуя метод firestore add () , он работает нормально, потому что я получаю DocumentReference (см. нажмите)
(сигнал используется только для целей тестирования)
service.ts
createProduct(data): Observable<any> {
return from(this.db.collection('slack').add({
...data
})).pipe(
tap(a => console.log('create: ', a))
// here I get back a DocumentReference
);
}
effect.ts
@Effect()
createProduct$ = this.actions$.ofType(productsActions.CREATE_PRODUCT)
.pipe(
map((action: productsActions.CreateProduct) => action.payload),
switchMap((product) => {
return this.productService.createProduct(product)
.pipe(
map(_product => new productsActions.CreateProductSuccess(_product)),
catchError((err => of(new productsActions.CreateProductFail(err))))
);
})
);
, но при использовании set ()метод , я получаю не определено (см. нажмите)
service.ts
updateProduct(data): Observable<any> {
return from(this.db.doc(`slack/0aMwkyVWF33PF7qDIvKy`).set({
...data,
})).pipe(
tap(a => console.log('update: ', a))
// Here I get undefined
);
}
effect.ts
@Effect()
updateProduct$ = this.actions$.ofType(productsActions.UPDATE_PRODUCT)
.pipe(
map((action: productsActions.UpdateProduct) => action.payload),
switchMap((product) => {
return this.productService.updateProduct(product)
.pipe(
map(_product => new productsActions.UpdateProductSuccess(_product)),
catchError((err => of(new productsActions.UpdateProductFail(err))))
);
})
);
Таким образом, мой эффект требует получения идентификатора, но он не определен.
Почему это работает для add () , а не для set () / update () ?
вот мой проект: https://github.com/angulartist/ngrx-firestore-playground/blob/master/src/products/services/products.service.ts
спасибо за помощь