【问题标题】:Generate Mongoose schemas from TypeScript interfaces?从 TypeScript 接口生成 Mongoose 模式?
【发布时间】:2012-12-07 09:21:37
【问题描述】:

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

我想知道是否没有人制定了一种从另一个自动生成的解决方案?

我想避免维护本质上相同的东西的两个副本的负担。

【问题讨论】:

标签: mongoose typescript


【解决方案1】:

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

【讨论】:

    【解决方案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
    };
    

    【讨论】:

    • 感谢您的建议。我实际上是从一个带有示例数据的 JSON 模型开始的,并从中派生出接口。我认为后者更简洁且更易于维护,因此可能会寻找一种从中生成 Mongoose 内容的解决方案。 (并为延迟发表评论表示歉意,工作受到阻碍)
    • 没有打字稿到模式转换器真是太可惜了......无论如何,是否有一个库已经提供了建议的解决方案?
    • 找到typegoose。这解决了一半的问题:D 仍在寻找招摇的对手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2020-06-24
    • 1970-01-01
    • 2014-02-09
    • 2017-02-21
    • 2013-05-14
    相关资源
    最近更新 更多