从TypeScript接口生成Mongoose模式?

时间:2012-12-19 22:26:17

标签: mongoose typescript

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

我想知道是否有人已经制定了一个解决方案来自动生成一个来自另一个?

我想避免维护两份基本相同的东西的负担。

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用一些易于解析的格式,并从中生成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
};

答案 1 :(得分:1)

来晚了,但是我们只是构建了一个工具来执行此操作,请查看mongoose-tsgen。此CLI工具会生成一个index.d.ts文件,其中包含您的所有架构接口,并且不需要您重写架构。每当您更改架构时,只需重新运行该工具即可。