【问题标题】:reference from typegoose model to mongoose model从 typegoose 模型到猫鼬模型的参考
【发布时间】:2018-10-25 20:39:26
【问题描述】:

在遗留项目中,我们正在迁移到 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)

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    我可能迟到了,但我认为您的应用程序中有两个单独的 mongoose 实例。我希望在您的旧应用程序中,您在启动时显式创建了一个 mongoose 实例,而 Typegoose 使用它自己的 mongoose 实例,我认为该实例是由 Typegoose 隐式创建的。

    在您的情况下,您必须将现有的猫鼬实例提供给第二个参数中的 getModelForClass 方法,如下所示

    export const BranchModel = new Branch().getModelForClass(Branch, {existingMongoose: legacyMongooseInstance});
    

    这应该使用相同的 mongoose 实例,并且 Typegoose 生成的 Schema 可以“看到”“遗留”模式。参考 Typegoose 的文档。

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 2013-01-25
      • 2022-12-10
      • 1970-01-01
      • 2020-04-07
      • 2013-02-04
      • 2015-03-16
      • 2021-09-19
      • 2020-07-20
      相关资源
      最近更新 更多