Как правильно печатать при использовании refPath с mongoose? - PullRequest
0 голосов
/ 04 июня 2019

машинописных бросков
«Тип« Голосование »не удовлетворяет ограничению« Документ ». Типы собственности «на» несовместимы. Тип «ObjectId» нельзя назначить типу (событие: строка | символ, слушатель: (... args: any []) => void) => Голосование '. Тип 'ObjectId' не обеспечивает совпадения для подписи '(событие: строка | символ, слушатель: (... args: any []) => void): голосования'. "

когда я использую refPath.

import { Document, Schema } from 'mongoose';
interface Vote extends Document {
  user: Schema.Types.ObjectId;
  onModel: string;
  on: Schema.Types.ObjectId;
}
export default Vote;



import mongoose, { Schema } from 'mongoose';
import Vote from '../types/Vote';
const VoteSchema: Schema = new Schema({
  user: Schema.Types.ObjectId,
  on: {
    type: Schema.Types.ObjectId,
    required: true,
    refPath: 'onModel',
  },
  onModel: {
    type: String,
    required: true,
    enum: ['Post', 'Comment'],
  },
});
export default mongoose.model<Vote>('Vote', VoteSchema);

1 Ответ

0 голосов
/ 04 июня 2019

Проблема не в refPath, а в том, что вы расширяете Document и не выполняете некоторые требования. Более конкретно: он жалуется, что не может найти свойство ObjectId, чего не должно быть, потому что это схема, а не документ.

Честно говоря, я не знаю, почему вы смешиваете Document и Schema. Попробуйте это.

import mongoose, { Schema } from 'mongoose';
import Vote from '../types/Vote';
const VoteSchema: Schema = new Schema({
    user: Schema.Types.ObjectId,
    on: {
        type: Schema.Types.ObjectId,
        required: true,
        refPath: 'onModel',
    },
    onModel: {
        type: String,
        required: true,
        enum: ['Post', 'Comment'],
    },
});
export default mongoose.model('Vote', VoteSchema);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...