Javascript Typescript导出默认值始终执行

Javascript Typescript导出默认值始终执行,javascript,node.js,typescript,mongoose,Javascript,Node.js,Typescript,Mongoose,作为node-js的初学者,我无法解决以下问题 import { createSchema, Type, typedModel } from "ts-mongoose"; const CompanySchema = createSchema( { companyName: Type.string({ required: true, unique: true }) }, { timestamps: true } ); const Company = typedM

作为node-js的初学者,我无法解决以下问题

import { createSchema, Type, typedModel } from "ts-mongoose";

const CompanySchema = createSchema(
  {
    companyName: Type.string({ required: true, unique: true })
  },
  {
    timestamps: true
  }
);

const Company = typedModel("Company", CompanySchema);

export { CompanySchema, Company };
这一切都很好,直到有一点。尝试导入此文件时

import {CompanySchema, Company} from "./Company";
它执行typeModel方法并按预期存储模式。但是,此文件Company.ts的任何其他导入都会重新运行此方法typeModel。然后失败,因为我只能用这个名称注册一次模式。我如何防止重新运行该对象,并且仍然保持对该对象的访问


为了保持对CompanySchema和Company对象的访问(因为它们稍后将在另一个模式中用作参考),一般的做法是什么?

我不知道createSchema和typedModel是什么(如果它们是您创建的功能或mongoose的一部分,我使用过的mongoose版本没有这些功能)

…但我认为您不应该“创建模式”,而应该定义它

e、 g


op正在使用ts猫鼬
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// define schema
const messageSchema = Schema({
    sender: { type: Schema.Types.ObjectId, ref: 'User' },
    recipient: { type: Schema.Types.ObjectId, ref: 'User' },
    createdAt: { type: Date, default: Date.now },
    deletedAt: { type: Date, default: undefined },
    readAt: { type: Date, default: undefined},
    message: { type: String, maxlength: 5000 }
});

// create a model based on that schema
const Message = mongoose.model('Message', messageSchema);

// Export the message model ... not the schema

module.exports.Message = Message;