Пн goose - получить _id из других полей - PullRequest
0 голосов
/ 27 мая 2020

У меня есть модель Person. Модель Person имеет поля firstName и secondName.

Теперь, с целью заполнения, я бы хотел, чтобы поле _id каждого Person всегда равнялось firstName + " " + secondName.

Как правильно этого добиться?

1 Ответ

0 голосов
/ 27 мая 2020

Пользовательские сеттеры - вот ответ.

const personSchema = new mongoose.Schema(
  {
    _id: String,
    name: {
      first: {
        type: String,
        required: true,
        index: true,
        set: function (this: IPerson, v: string) {
          this.name.first = v;
          this._id =
            (this.name.last ? " " + this.name.last : "") +
            (this.name.middle ? " " + this.name.middle : "") +
            (this.name.first ? " " + this.name.first : "");
          return v;
        },
      },
      middle: {
        type: String,
        index: true,
        set: function (this: IPerson, v: string) {
          this.name.middle = v;
          this._id =
            (this.name.last ? " " + this.name.last : "") +
            (this.name.middle ? " " + this.name.middle : "") +
            (this.name.first ? " " + this.name.first : "");
          return v;
        },
      },
      last: {
        type: String,
        required: true,
        index: true,
        set: function (this: IPerson, v: string) {
          this.name.last = v;
          this._id =
            (this.name.last ? " " + this.name.last : "") +
            (this.name.middle ? " " + this.name.middle : "") +
            (this.name.first ? " " + this.name.first : "");
          return v;
        },
      },
      full: {
        type: String,
        index: true,
        set: () => {
          throw new Error("person.name.full is readonly.");
        },
      },
    },
    isEntity: {
      type: Boolean,
      required: true,
    },
  },
  { toObject: { virtuals: true } }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...