0

我试图从 MongoDB 收回我的 TelegramEntity 并且无法检索带有adverts的数组。我能做些什么来解决这个问题?

电报实体.ts:

import { prop, getModelForClass, modelOptions } from "@typegoose/typegoose";

export class AdvertSubscriptionEntity {
  @prop({ type: String, required: true, select: true })
  public location!: string;

  @prop({ type: Boolean })
  public lessOrEqual?: boolean;

  @prop({ type: Number })
  public price?: number;

  @prop({ type: Boolean, default: true })
  public active?: boolean;

  constructor(opts?: Partial<AdvertSubscriptionEntity>) {
    if (opts) {
      Object.assign(this, opts);
    }
  }
}

@modelOptions({ schemaOptions: { collection: "telegrams" } })
export class TelegramEntity {
  @prop({ type: String })
  public username?: string;

  @prop({ type: Number, required: true })
  public chatId!: number;

  @prop({
    type: () => [AdvertSubscriptionEntity],
    _id: false,
    select: true
  })
  public adverts?: AdvertSubscriptionEntity[];
}

export const TelegramModel = getModelForClass(TelegramEntity);

这是我找到我的 tg 行的方法:

return await TelegramModel
      .findOne(filter, undefined, options)
      .exec();

所以结果:{"_id":"<ObjectId>","username":"<username>","chatId": <id> ,"__v":0}

我的 package.json:

"@typegoose/typegoose": "8.2",
"mongoose": "6",
4

1 回答 1

0

我将广告类型从更改为[AdvertSubscriptionEntity]mongoose.Schema.Types.Mixed并且我的代码有效。

于 2021-08-30T18:12:30.857 回答