在旧项目中,我们正在迁移到typegoose。 现在有猫鼬模型和 我需要从typegoose到旧的mongoose模型进行引用。
猫鼬模型示例:
export interface User extends Mongoose.Document {
FirstName: string;
LastName: string;
}
const userSchema = new Mongoose.Schema({
FirstName: String,
LastName: String,
}, {strict: false, versionKey: false});
export default Mongoose.model<User>('users', userSchema);
现在,我创建了一个typegoose模型:
import UserModel, {User} from "./user";
export class Branch extends Typegoose {
@prop({ref: UserModel})
owner?: Ref<User>;
@prop()
name: string;
}
export const BranchModel = new Branch().getModelForClass(Branch);
我不知道如何获取分支用户。
我尝试填充BranchModel.find({}).populate({path: "user"})
但出现错误Schema hasn't been registered for model \"model\".\nUse mongoose.model(name, schema)","stack":"MissingSchemaError: Schema hasn't been registered for model \"model\".\nUse mongoose.model(name, schema)
答案 0 :(得分:0)
也许我来晚了答复,但是我认为您的应用程序中有两个单独的猫鼬实例。我希望在您的旧应用程序中,您是在启动时显式创建一个Mongoose实例,而Typegoose使用自己的Mongoose实例,我认为它是由Typegoose隐式创建的。
在这种情况下,您必须在下面的第二个参数中将现有的猫鼬实例提供给getModelForClass方法
export const BranchModel = new Branch().getModelForClass(Branch, {existingMongoose: legacyMongooseInstance});
应该使用相同的猫鼬实例,并且Typegoose生成的架构可以“看到”“旧式”架构。请参阅Typegoose的文档。