схемы 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.
Если я делаю это свойство не массивом, то всё ок собирается, и ошибка пропадает.
В чём прикол?
Если что, ChatGPT сказал, что "у меня всё работает, это ты д***боёб", и был таков
уж лучше так, чем когда он выдумывает несуществующие методы и пакеты :)
Надо правильные абстракции скармливать и ответ будет приемлимый
Так, ну, смотрите. Проблема точно не в ReplySchemaModel, так как даже если я там уберу наследование с MessageSchemaModel, часть свойств сделаю обязательной, или вообще удалю все свойства, кроме одного какого-нибудь примитивного - то ошибка останется. Единственный путь - это поменять: @Prop({ type: [ReplySchemaModel], required: true }) replies: ReplySchemaModel[]; на @Prop({ type: ReplySchemaModel, required: true }) replies: ReplySchemaModel; Я не понимат!
Обсуждают сегодня