如何在选择方法中调用猫鼬方法

问题描述 投票:1回答:2

我有一个代表玩家的猫鼬模型,希望能够获取该玩家,并且在选择该玩家时,希望像吸气剂一样调用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"])

我是否可以将类的方法设置为吸气剂?

javascript node.js mongodb mongoose getter
2个回答
0
投票

您可以使用virtual property

在Mongoose中,虚拟是未存储在MongoDB中的属性。虚拟通常用于文档上的计算属性。

PlayerSchema.virtual('isReady').get(function () {
    return Boolean(this.famousPerson);
});

0
投票

正如mickl指出的那样,您可以使用猫鼬虚拟机,但是要按预期工作,您需要配置架构以使其返回虚拟机,因为默认情况下将不包括虚拟机。

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

PlayerSchema.virtual("isReady").get(function () {
  return Boolean(this.famousPerson);
});
© www.soinside.com 2019 - 2024. All rights reserved.