我使用 Angular 7、Firestore 和 ngRx 制作了一个项目。
我正在编写我的效果,而set() 方法无法正常工作。
使用 firestore add() 方法时,它工作正常,因为我得到了 DocumentReference(请参阅点击)
(水龙头仅用于测试目的)
服务.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
);
}
效果.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() 方法时,我得到未定义(请参阅点击)
服务.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
);
}
效果.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))))
);
})
);
所以我的效果是想得到一个ID,但他没有定义。
为什么这适用于add()而不适用于set()/update()?
感谢您的帮助