Как вызвать метод mon goose в методе select - PullRequest
1 голос
/ 05 апреля 2020

У меня есть модель mon goose, которая представляет игрока и хочет иметь возможность выбрать игрока, и при выборе игрока хочу вызвать isReady как получатель.

Модель выглядит следующим образом Итак:

const PlayerSchema = new Schema({
  user: { type: Schema.Types.ObjectId, ref: "User" },
  famousPerson: { type: String }
})

PlayerSchema.methods.isReady = function (cb) {
  return Boolean(this.famousPerson)
}

И я хочу, чтобы это можно было назвать так:

const player = await PlayerModel
      .findOne({_id: playerId})
      .select(["_id", "username", "isReady"])

Могу ли я установить метод для класса как получатель?

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Для этого вы можете использовать виртуальные машины mon goose, но чтобы работать должным образом, вам необходимо настроить схему так, чтобы она могла возвращать виртуальные объекты, поскольку виртуальные машины по умолчанию не будут включены.

const PlayerSchema = new Schema(
  {
    famousPerson: { type: String },
  },
  {
    toJSON: { virtuals: true },
    toObject: { virtuals: true },
  }
);

PlayerSchema.virtual("isReady").get(function () {
  return Boolean(this.famousPerson);
});
0 голосов
/ 14 апреля 2020

Вы можете следовать этому коду

const player = await PlayerModel
      .findOne({_id: playerId})
      .select(" +_id +username +isReady)
...