209 похожих чатов

Всем привет. В схеме есть свойство replies, которое является массивом

схемы ReplySchemaModel:

@Prop({ type: [ReplySchemaModel], required: true })
replies: ReplySchemaModel[];

Cтруктура ReplySchemaModel такая:

class ReplySchemaModel extends MessageSchemaModel {
@Prop()
replySeed?: number;
@Prop({ type: ReplyUsageSchemaModel })
usage?: ReplyUsageSchemaModel;
@Prop({ type: Object })
// eslint-disable-next-line @typescript-eslint/ban-types
extra?: Object;
@Prop()
modelName?: string;
@Prop()
modelVersion?: string;
@Prop()
createdAt?: string;
@Prop()
updatedAt?: string;
}

class ReplyUsageSchemaModel {
@Prop()
completionTokens?: number;

@Prop()
promptTokens?: number;

@Prop()
totalTokens?: number;
}

как видите, он наследуется от MessageSchemaModel:

class MessageSchemaModel {
@Prop({ required: true })
messageTextBody: string;

@Prop()
messageIdInService: string;

/**
* An HTTP uri that is publicly or privately available
*/
@Prop()
messageLink: string;

@Prop({ required: true })
hasMedia: boolean;

@Prop({ type: [MediaSchema] })
media?: MediaSchema[];
}

но это, по ходу, вообще неважно.

Проблема в том, что из-за того, что в самом верхнем блоке кода replies - массив, выдается ошибка:

\node_modules\mongoose\lib\schema.js:1404
throw new TypeError('Invalid schema configuration: ' +
^
TypeError: Invalid schema configuration: `ReplySchemaModel` is not a valid type within the array `replies`.See https://bit.ly/mongoose-schematypes for a list of valid schema types.

Если я делаю это свойство не массивом, то всё ок собирается, и ошибка пропадает.

В чём прикол?

4 ответов

24 просмотра
Kenya-West-️ Автор вопроса

Если что, ChatGPT сказал, что "у меня всё работает, это ты д***боёб", и был таков

уж лучше так, чем когда он выдумывает несуществующие методы и пакеты :)

valeriy
уж лучше так, чем когда он выдумывает несуществующ...

Надо правильные абстракции скармливать и ответ будет приемлимый

Kenya-West-️ Автор вопроса

Так, ну, смотрите. Проблема точно не в ReplySchemaModel, так как даже если я там уберу наследование с MessageSchemaModel, часть свойств сделаю обязательной, или вообще удалю все свойства, кроме одного какого-нибудь примитивного - то ошибка останется. Единственный путь - это поменять: @Prop({ type: [ReplySchemaModel], required: true }) replies: ReplySchemaModel[]; на @Prop({ type: ReplySchemaModel, required: true }) replies: ReplySchemaModel; Я не понимат!

Похожие вопросы

Обсуждают сегодня

Карта сайта