Я отправляю действие / редуктор upsert в свой магазин, чтобы добавить новую запись в состояние, и есть эффект, который вызывает бэкэнд и добавляет запись / документ в мой экземпляр mongodb.
Учитывая, что единственный разумный идентификатор для этой конкретной модели определяется моей бэкэнд-логикой во время создания документа, как я должен определить 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
- это поле с ошибками, которое мне нужно использовать для ссылки на сущность.