[英]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.