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
,owner
、species
、sex
、birth
、および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にシリアル化し、フロントエンドはそれを解析しなければなりません。フロントエンドは、name
とowner
というプロパティを持つオブジェクトを期待する必要があります。その代わりに、つまりpetName
が必要な場合、これはバグでしょう。 POSTリクエスト
は、モデルは、バックエンドロジックでDBテーブルで
- を重複してフロントエンドの応答をレンダリングするときにフロントエンドの
- フロントエンドのリクエストボディを送信するときに
- バックエンド
もちろん、この問題は他の人にも直面しています。
あなたの答えに解説していただけますか?これはスタック全体でモデルの重複を維持し、減らすのにどのように役立ちますか? – cosmosa
モデルPet.tsは一度宣言します。そして、それは、データスキーマを生成するために使用され、データを取得するためのクエリ、jsonとしてフロントエンドに戻り、反応で表示されます。 –