typescript 用户模型一经编译就不能覆盖

ff29svar  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(110)
class UserModel {
    initSchema() {
        const schema = new Schema({
            name: "string",
            email: "string",
            password: "string",
        });
        mongoose.model("users", schema);
    }
    getInstance() {
        this.initSchema();
        return mongoose.model("users");
    }
}

export default UserModel;
export class UserModel extends BaseModel {
    constructor(model: any) {
        const dataAccess = new DataAccess();
        model = dataAccess.getSchema("users");
        super(model);
    }
}



class DataAccess {
    getSchema = (schema: any) => {
        return mongoose.model(schema);
    }
}
    • DataAccess类可以分配给BaseService以进行数据操作(CRUD)**
    • 在执行操作时出现数据库无法覆盖的错误**
    • 还不清楚如何将UserModel的名称传递给DataAccess类方法,以便在BaseService中使用它进行数据操作**
du7egjpx

du7egjpx1#

我认为问题是你每次初始化的时候都试图覆盖你的模型,如果你想先使用initSchema,你需要检查它是否注册过:

initSchema() {
        if (mongoose.models.users) {
            return;
        }

        const schema = new Schema({
            name: "string",
            email: "string",
            password: "string",
        });
        mongoose.model("users", schema);
    }

相关问题