繁体   English   中英

Mikro-ORM:如何退回收藏中的第一个项目?

[英]Mikro-ORM: How can I return first item in collection?

我有 2 个像下面这样的实体,但我只想返回一个stats object。 Mikro-ORM 将其作为数组返回。

有没有办法告诉 Mikro-ORM 将数组中的第一个元素作为 object 返回?

最终结果类似于deck.stats.stats_property 而不是deck.stats[0].stats_property

@Entity()
export class Deck extends MyBaseEntity<Deck> {
  @OneToMany({ entity: () => DeckStats, mappedBy: (stat) => stat.deck })
  stats = new Collection<DeckStats>(this);

  constructor( ...extraValues }: DeckConstructorValues) {
    super(extraValues);
  }

@Entity()
export class DeckStats extends BaseEntity< DeckStats > {
  @ManyToOne(() => Deck, { wrappedReference: true, primary: true, mapToPk: true })
  deck: string;

  @ManyToOne(() => User, { wrappedReference: true, primary: true, mapToPk: true })
  user: string;

  [PrimaryKeyType]?: [User, Deck];
    
  constructor({ deck, user }: DeckStatsConstructorValues) {
    super();
    this.deck = deck.id;
    this.user = user.id;
  }

您可以在实体上实现自定义toJSON方法,这可以为您提供更多控制权,或者在这里只使用属性序列化器就足够了:

https://mikro-orm.io/docs/serializing#property-serializers

@OneToMany({
  entity: () => DeckStats,
  mappedBy: (stat) => stat.deck,
  serializer: value => value[0], // <-- this is the new line
})
stats = new Collection<DeckStats>(this);

这仅对实体的序列化形式有效,因此在您执行console.log(e)时无效,而仅在console.log(JSON.strigify(e))之后有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM