我正在我的商店中调度 upsert 操作/reducer 以向状态添加新记录,并且有一个效果会调用后端并将记录/文档添加到我的 mongodb 实例。
鉴于此特定模型的唯一合理 id 是在创建文档时由我的后端逻辑定义的,我应该如何在前端的实体实现中定义 selectId?
目前,一个项目被添加到状态,id: undefined
我收到警告:
entity.js:76 @ngrx/entity:传递给
selectId
实现的实体返回未定义。您可能应该提供自己的selectId
实现。
我的适配器定义为:
export const adapter: EntityAdapter<PublishedData> = createEntityAdapter<
PublishedData
>({ selectId: (publishedData: PublishedData) => publishedData.doi });
相关的效果是:
@Effect()
UpsertPublishedData$ = this.actions$.pipe(
ofType<UpsertPublishedData>(PublishedDataActionTypes.UpsertPublishedData),
switchMap(action => this.publishedDataApi.create(action.payload.publishedData)
.pipe(mergeMap((data: PublishedData) => [ new UpsertPublishedData({ publishedData: data }),
this.publishedDataApi.register(data[0].doi)]),
catchError(err => of(new FailedPublishedDataAction(err)))))
);
publishedData.doi
是我需要用来引用实体的违规字段。