Проверка свойств схемы Mongoose с помощью Typescript - PullRequest
0 голосов
/ 29 апреля 2018

Я изучаю TypeScript и играю с мангустом. У меня есть следующее определение схемы (упрощенная форма):

interface IContact extends Document {
  type: string;
  firstName?: string;
}

const contactSchema = new mongoose.Schema({
  contactType: {
    type: String,
    required: true,
    trim: true,
    enum: ['person', 'general']
  },
  firstName: {
    type: String,
    required: function() {
      return this.contactType === 'person';
    },
    minlength: 1,
    trim: true
  }})

 const Contact = mongoose.model<IContact>('Contact', contactSchema);

Теперь компилятор TypeScript выдает мне следующую ошибку:

Свойство contactType не существует для типа «Схема | SchemaType | SchemaTypeOpts. Свойство contactType не существует для типа «Схема».

Проверка правильности обязательного поля, взятая из документации mongoose, правильная (с использованием ключевого слова this), или есть другой способ? Или я должен аннотировать мою схему таким образом, чтобы TypeScript знал, что в моей схеме есть свойство contactType?

1 Ответ

0 голосов
/ 23 августа 2018

Вы можете попробовать это, это сработало для меня:

// ...contactSchema declaration above... //

contactSchema.obj.firstName.required = function() {
  return this.contactType === 'person';
};

// ...Contact model declaration below... //
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...