koa 2+graphql+typescript+jwt+typeormのnodejsプロジェクト


最近nodeプロジェクトを書きましたが、主に使用されている技術は次のとおりです.
koa2  // nodejs   
koa-router // koa  
graphql //   api
typescript //      
jwt //   
typeorm  // typescript   orm
mysql2  //      
mongodb  //        
redis  //      

プロジェクト構造:
conf  (     ,  db  、        、        server.ts)
release  (     )
src(        )
    controllers(   )
    core(    )
    database(db  )
    entities(mysql/mongodb     )
    middlewares(koa   )
    models(         )
    routes(  )
    schema(graphql schame)
    utils(     )
    app.ts      

このプロジェクトはkoaのルーティングを使用しており、通常のRESTfulとgraphqlの2種類のapiを同時にサポートすることができます.
現在jwtモードの使用が許可されており、登録のためにredisでユーザセッション情報の保存を支援している(酔っ払っている...)
graphqlプロジェクトでは、バックエンド定義でデータモデルを返すだけで、フロントエンドは自分の必要なデータに従ってインタフェースをクエリーし、冗長性のないデータを返すことができ、非常に簡潔で便利です.
graphqlの定義や様々なメリットは言わないで、実戦結果を直接見ましょう.
GraphQLの例
//   
{
  count
  articles{
    list{id,title}
    meta{page,page_size}
  }
}

//   
{
  "data": {
    "count": 3,
    "articles": {
      "list": [
        {
          "id": "594459f050bcc2abbbf5116ed301b002",
          "title": "Laravel 5.6    5.5    Laravel     002"
        },
        {
          "id": "594459f050bcc2abbbf5116ed301b003",
          "title": "Laravel 5.6    5.5    Laravel     003"
        },
        ...
      ],
      "meta": {
        "page": 1,
        "total": 24
      }
    }
  }
}

フロントエンド非同期要求のスクリーンショット:
要求データ
結果を返す
結果的に、返されたデータは完全に自分の必要に応じてクエリーされて返されます.
プロジェクトのアドレス:https://github.com/xpioneer/k...
現在は初版だけで、まだ工事プロジェクト全体を完備していないので、全体のアーキテクチャはまだ調整する必要がありますが、全体の流れを走ることができます!
starプロジェクトへようこそ、指摘も歓迎~~