0

我正在尝试使用 ngrx/data -> saveEntities 将多个实体添加到商店。到目前为止,我得到了这个:

@Injectable()
export class MaintenanceEntityService extends EntityCollectionServiceBase<Maintenance> {

  constructor(
    private serviceElementsFactory: EntityCollectionServiceElementsFactory,
    private entityCacheDispatcher: EntityCacheDispatcher) {
    super('Maintenance', serviceElementsFactory);
  }

  addBatch(maintenances: Maintenance[]) {
    const changes: ChangeSetItem[] = [
      cif.add('Maintenance', maintenances)
    ];
    const changeSet: ChangeSet = { changes, tag: 'Creating alert batch'};

    return this.entityCacheDispatcher.saveEntities(changeSet, `${environment.API}maintenances`).pipe(
      map(response => response)
    );
  }
}

我的端点接收并返回一个像这样的对象:

interface ChangeSet<T = any> {
  changes: ChangeSetItem[]
  extras?: T
  tag?: string
}

在后端,我将所有实体插入数据库,然后在返回同一对象之前更新 id,但在 Angular 应用程序中,商店没有更新。我错过了什么吗?

https://ngrx.io/api/data/EntityCacheDispatcher#saveentities

4

1 回答 1

0

好的,该ChangeSet对象有一个名为ChangeSetItem下一个结构的属性:

type ChangeSetItem = ChangeSetAdd | ChangeSetDelete | ChangeSetUpdate | ChangeSetUpsert;

interface ChangeSetAdd<T = any> {
  op: ChangeSetOperation.Add
  entityName: string
  entities: T[]
}

所以我需要从后端返回相应entityName的,以便可以将其添加到商店:在我的情况下:维护

不知道为什么该属性未在此行中设置:

const changes: ChangeSetItem[] = [
      cif.add('Maintenance', maintenances)
    ];
于 2020-12-29T21:30:10.593 回答