【发布时间】:2021-03-12 12:44:54
【问题描述】:
在第一个 shema 是 @Prop({ type: { Types.ObjectId, ref: Tag.name }}) 更改为 @Prop({ type: [{ type: Types.ObjectId, ref: Tag.name }]}) 后,我没有从数据库中收到数据,因为这里推荐 https://github.com/nestjs/nest/issues/5716 我收到错误架构尚未注册模型
环境:
node-version: v14.15.1
Ubuntu: 18.04.5 LTS
"@nestjs/core": "7.5.5",
"mongoose": "^5.10.9",
"@nestjs/mongoose": "^7.1.2",`
conversatiom.schema.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
import { CONVERSATION_STATUS } from './conversation-status.constant';
import { Tag } from '../tag/tag.schema';
export type ConversationDocument = Conversation & Document;
@Schema()
export class Conversation {
@Prop({ required: true })
_id: Types.ObjectId;
@Prop({ required: true })
workspace: Types.ObjectId;
@Prop()
assignee?: string;
@Prop({ default: false })
priority?: boolean;
@Prop({
default: CONVERSATION_STATUS.OPEN,
enum: [CONVERSATION_STATUS.OPEN, CONVERSATION_STATUS.CLOSED, CONVERSATION_STATUS.REOPENED]
})
status?: CONVERSATION_STATUS;
@Prop({ type: [{ type: Types.ObjectId, ref: Tag.name }]})
tags?: Tag[] | Types.ObjectId[];
@Prop({ required: true })
createdBy: string;
@Prop({ default: new Date() })
createdAt?: Date;
@Prop()
updatedBy?: string;
@Prop()
updatedAt?: Date;
}
export const ConversationSchema = SchemaFactory.createForClass(Conversation);
tag.schema.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type TagDocument = Tag & Document;
@Schema()
export class Tag {
@Prop({ required: true })
value: string;
@Prop({ required: true })
createdBy: string;
@Prop({ default: new Date() })
createdAt?: Date;
}
export const TagSchema = SchemaFactory.createForClass(Tag);
tag.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { TagController } from './tag.controller';
import { TagService } from './tag.service';
import { ConversationSchema } from '../conversation/conversation.schema';
import { TagSchema } from './tag.schema';
@Module({
imports: [
MongooseModule.forFeature([{ name: 'tag', schema: TagSchema }]),
MongooseModule.forFeature([{ name: 'conversation', schema: ConversationSchema }])
],
controllers: [TagController],
providers: [TagService]
})
export class TagModule {}
错误:
stdout: [Nest] 152 - 11/30/2020, 1:26:46 PM [RpcExceptionsHandler] Schema hasn't been registered for model "Tag".
Use mongoose.model(name, schema) +7158ms
stdout: MissingSchemaError: Schema hasn't been registered for model "Tag".
Use mongoose.model(name, schema)
at NativeConnection.Connection.model (/app/node_modules/mongoose/lib/connection.js:1195:11)
at getModelsMapForPopulate (/app/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js:285:59)
at populate (/app/node_modules/mongoose/lib/model.js:4321:21)
at _populate (/app/node_modules/mongoose/lib/model.js:4291:5)
at /app/node_modules/mongoose/lib/model.js:4267:5
at promiseOrCallback (/app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:9:12)
at Function.Model.populate (/app/node_modules/mongoose/lib/model.js:4265:10)
at cb (/app/node_modules/mongoose/lib/query.js:1946:17)
at /app/node_modules/mongodb/lib/utils.js:674:5
at handleCallback (/app/node_modules/mongodb/lib/utils.js:102:55)
at /app/node_modules/mongodb/lib/cursor.js:838:66
at /app/node_modules/mongodb/lib/utils.js:674:5
at /app/node_modules/mongodb/lib/cursor.js:923:9
at Cursor._endSession (/app/node_modules/mongodb/lib/core/cursor.js:394:7)
at /app/node_modules/mongodb/lib/cursor.js:921:12
at maybePromise (/app/node_modules/mongodb/lib/utils.js:662:3)
【问题讨论】:
-
你能和我们分享一下标签模块吗?
-
更新:添加标签模块