You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TypeScript interface生成MongoDB JSON Schema?

解决方案

你可以通过以下两种方案完成批量转换,按需选择即可:

方案1:使用成熟工具(推荐,适合中大型项目)

使用ts-json-schema-generator工具,搭配自定义类型映射规则,开箱即可生成符合要求的MongoDB JSON Schema:

  • 安装依赖
npm i ts-json-schema-generator -D
  • 新建转换脚本,示例如下:
// generate-mongo-schema.js
const tsj = require('ts-json-schema-generator');
const fs = require('fs');

const config = {
  path: './src/collections/*.ts', // 替换为你存放interface的文件路径
  tsconfig: './tsconfig.json',
  type: 'Category', // 要转换的interface名,传*则批量转换所有interface
  additionalProperties: false, // 自动生成禁止额外字段的规则
  required: true, // 自动将所有interface字段加入必填列表
};

// 生成基础JSON Schema
let schema = tsj.createGenerator(config).createSchema(config.type);
// 替换为MongoDB专属的bsonType规则
let schemaStr = JSON.stringify(schema, null, 2)
  .replace(/"type": "ObjectId"/g, '"bsonType": "objectId"')
  .replace(/"type": "Date"/g, '"bsonType": "date"')
  .replace(/"type": "null"/g, '"bsonType": "null"')
  .replace(/"type": "string"/g, '"bsonType": "string"');

// 导出为ts文件可用的常量格式
const output = `export const CategoryJSONSchema = ${schemaStr}`;
fs.writeFileSync('./src/schemas/category.schema.ts', output);
  • 运行脚本即可得到符合要求的schema文件,批量转换时只需遍历所有interface名生成对应文件即可。

方案2:手写轻量脚本(适合简单场景)

如果你的项目interface规则比较固定,也可以基于TypeScript Compiler API自己写解析逻辑,几十行代码就能完成转换,不需要引入额外依赖,适合自定义需求高的场景。


内容的提问来源于stack exchange,提问作者DauleDK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:36:03