2017-12-02 10 views
0

MySQL DBに裏打ちされたフラスコ(ORMなし)を使用し、フロントエンドでReactを使用してWebアプリケーションを構築しています。 MySQL、Flask、およびReactの両方でモデルが複製されていることに懸念があります。例として、私はpetに挿入したいとしましょう、私はフラスコアプリに続いて、次のMySQLのテーブルDB、バックエンド、フロントエンドでのモデルの重複を減らす

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), 
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); 

を持っていると言います。フラスコビューには、次のフィールドを持つ本文があります。name,ownerspeciessexbirth、およびdeathこれらの名前のフィールドを持つスキーマに挿入する必要があります。ですから、フロントエンドで、その後'INSERT INTO pet (name, owner, ...) VALUES ({name}, {owner}, ...)'.format(**body)

body = request.get_json()のようなものとする必要があるだろう、我々はのは、これらの値は、フォームから来ていたとしましょう場合

this.state = { 
    name: ..., 
    owner: ..., 
    ... 
} 

のように、バックエンドに似た状態を維持しなければなりません。そして、我々が重複することに加えて、この

{ 
    name: this.state.name, 
    owner: this.state.owner, 
    ... 
} 

のように身体を送信することにより、これらの値をPOSTする必要があります、フロントエンドが誤ってownerName代わりのowner送信したものかのように、エラーが発生しやすいようですか?バックエンドはownerという名前のフィールドで本文を解析しようとしますが、何も見つかりません。

代わりに、バックエンドがSELECT name, owner FROM petのようにデータをフロントエンドに返すとします。その後、バックエンドは応答をJSONにシリアル化し、フロントエンドはそれを解析しなければなりません。フロントエンドは、nameownerというプロパティを持つオブジェクトを期待する必要があります。その代わりに、つまりpetNameが必要な場合、これはバグでしょう。 POSTリクエスト

  • の本体を解析するときに、バックエンド・ロジックにDB
  • を照会するときに要約

    は、モデルは、バックエンドロジックでDBテーブルで

    • を重複してフロントエンドの応答をレンダリングするときにフロントエンドの
    • フロントエンドのリクエストボディを送信するときに
    • バックエンド

    もちろん、この問題は他の人にも直面しています。

  • 答えて

    -1

    フロントエンドコードでモデル/バックエンドコードを再利用する場合は、バックエンドとフロントエンドの両方で同じプログラミング言語(TypeScript)を使用するUninodeのようなフレームワークを使用する必要があります。

    +0

    あなたの答えに解説していただけますか?これはスタック全体でモデルの重複を維持し、減らすのにどのように役立ちますか? – cosmosa

    +0

    モデルPet.tsは一度宣言します。そして、それは、データスキーマを生成するために使用され、データを取得するためのクエリ、jsonとしてフロントエンドに戻り、反応で表示されます。 –

    関連する問題