簡體   English   中英

打字稿導出默認始終執行

[英]Typescript export default always executing

作為 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 是什么(如果它們是您或貓鼬的一部分創建的函數,我使用過的貓鼬版本沒有這些函數)

...但我認為你不應該“createSchema”,而應該定義它。

例如

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM