从TypeScript接口生成Mongoose模式?

9

我一直在为我的应用程序定义TypeScript接口,包括所有类型和数据结构,并很快将面临将大部分数据结构复制为Mongoose模式定义的任务。

我想知道是否有人已经开发出自动生成一个结构的解决方案?

我希望避免维护两个本质上相同的副本的负担。


我会将此问题添加为相关问题从TypeScript生成Swagger文档。或许有人已经找到了解决方案…自动同步它们所有将非常不错。 - Adrian Moisa
2个回答

3

最简单的方法是使用易于解析的格式,并从中生成Typescript和Mongoose接口。以下是JSON示例:

{ "name": "IThing",
  "type": "interface",
  "members": [
      { "name": "SomeProperty",
        "type": "String" },
      { "name": "DoStuff",
        "type": "function",
        "arguments": [
            { "name": "callback",
              "type": "function",
              "arguments": [],
              "return": "Number" }
        ] }
  ] }

结构和标记语言都可以根据您的需要进行更改。

在TypeScript中,以上内容将产生类似于以下的结果:

interface IThing {
    SomeProperty: String;
    DoStuff(callback: () => Number)
}

并且在Mongoose中:

var IThing = new Schema({
    "SomeProperty": "String"
});

IThing.methods.DoStuff = function (callback) {
    // TODO
};

谢谢您的建议。我实际上是从一个带有示例数据的JSON模型开始的,然后从中推导出接口。我认为后者更简洁易维护,所以可能会寻找一个从中生成Mongoose代码的解决方案。(对于评论的延迟表示歉意,工作占用了太多时间) - Morten Mertner
真遗憾没有一个TypeScript到Schema的转换器...不过,是否已经有一个库提供了所提出的解决方案呢? - Adrian Moisa
1
发现了typegoose,这解决了一半的问题:D 仍在寻找swagger的对应方案。 - Adrian Moisa

3

有点晚,但我们刚刚制作了一款工具,可以完美地实现这一点,请查看mongoose-tsgen。 这个CLI工具会生成一个包含所有模式接口的index.d.ts文件,并且不需要您重新编写模式。 只要更改模式,就重新运行该工具即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接