Firestoreクラウド機能は1つのフィールドに複数のフィールドを追加します

ahsan nissar

「オプション」というフィールド名があり、このフィールド自体に8つの異なるチェックボックス値が含まれています。nodejsを使用してfirestoreクラウド関数を記述し、このフィールド「オプション」が存在するコレクションにデータを投稿しています。これまでのところ、これは私が書いたものです

exports.addCourse = functions.https.onRequest((req, res) => {
    res.set('Access-Control-Allow-Origin', 'http://localhost:4200');
    res.set('Access-Control-Allow-Methods', 'GET', 'POST');
    res.set('Access-Control-Allow-Headers', 'Content-Type'); 
    if(req.method === 'OPTIONS') {
        res.end();
    }
    else 
    {
        if (req.body.name != null && req.body.type != null && req.body.discipline != null && req.body.price_options != null
            && req.body.price != null && req.body.addon_prompt != null && req.body.addons != null && req.body.ship_price != null
            && req.body.keycode_bank != null && req.body.card_type != null && req.body.options != null && req.body.certificate_prompt != null
            && req.body.student_to_instructor_ratio != null && req.body.student_to_manikin_ratio != null && req.body.electronic_signature != null
            || req.body.name != undefined && req.body.type != undefined && req.body.discipline != undefined && req.body.price_options != undefined
            && req.body.price != undefined && req.body.addon_prompt != undefined && req.body.addons != undefined && req.body.ship_price != undefined
            && req.body.keycode_bank != undefined && req.body.card_type != undefined && req.body.options != undefined && req.body.certificate_prompt != undefined
            && req.body.student_to_instructor_ratio != undefined && req.body.student_to_manikin_ratio != undefined && req.body.electronic_signature != undefined ) {
            let docId = Math.floor(Math.random() * (99999 - 00000));
            let newCourse = {
                "name": req.body.name,
                "type": req.body.type, //1: Classroom session enabled 2. No Classroom session 
                "discipline": req.body.discipline,
                "price_options": req.body.price_options, //Registrations allowed with deposits or not?
                "price": req.body.price,
                "addon_prompt": req.body.addon_prompt,
                "addons": req.body.addons, //add addons api values will be sent here 
                "ship_price": req.body.ship_price,
                "keycode_bank": req.body.keycode_bank, //Keycode bank value will be sent here
                "card_type": req.body.card_type, //Card type value will be sent here
                "options": {
                    "certificate_prompt": req.body.certificate_prompt,
                    "student_to_instructor_ratio": req.body.student_to_instructor_ratio,
                    "student_to_manikin_ratio": req.body.student_to_manikin_ratio,
                    "electronic_signature": req.body.electronic_signature
                }
            }
            usersCourses.add(newCourse).then(snapshot => {
                res.send(200, {
                    "message": "Course was successfully created"
                })
            });


        } else {
            res.send(400, {
                "message": "All fields are required"
            })
        }
    }
});

このAPIをデプロイし、Postmanでヒットしましたが、「すべてのフィールドが必要です」というエラーが発生しました。私は何が間違っているのですか?これは、「オプション」フィールドに複数のフィールドを追加する正しい方法ですか?

APIのプロパティに提供される特定のデータ型がないため、郵便配達員を介して送信するデータは実際のものではありません

データ

{
    "name": "req.body.name",
    "type": "req.body.type", 
    "discipline": "req.body.discipline",
    "price_options": "req.body.price_options",
    "price": "req.body.price",
    "addon_prompt": "req.body.addon_prompt",
    "addons": "req.body.addons",
    "ship_price": "req.body.ship_price",
    "keycode_bank": "req.body.keycode_bank", 
    "card_type": "req.body.card_type", 
    "options": {
        "certificate_prompt": "req.body.certificate_prompt",
        "student_to_instructor_ratio": "req.body.student_to_instructor_ratio",
        "student_to_manikin_ratio": "req.body.student_to_manikin_ratio",
        "electronic_signature": "req.body.electronic_signature"
    },
    "ceu_credits": "req.body.ceu_credits",
    "description": "req.body.description",
    "confirm_email": "req.body.confirm_email"

}
マルコスルイスデルガド

問題は、リクエスト本文で送信するデータの最上位にあるかのifように、optionsプロパティに含まれる値をチェックしている状態にあります

また、型強制なしで演算子をnull使用しているので値をチェックすることもできます!=

送信するデータが質問で提供したデータである場合は、if条件の内容を次のように変更しますoptionsフィールド内の値をチェックし、チェックを削除しundefinedます)。

req.body.name != null && req.body.type != null && req.body.discipline != null && req.body.price_options != null
&& req.body.price != null && req.body.addon_prompt != null && req.body.addons != null && req.body.ship_price != null
&& req.body.keycode_bank != null && req.body.card_type != null && req.body.options != null && req.body.options.certificate_prompt != null
&& req.body.options.student_to_instructor_ratio != null && req.body.options.student_to_manikin_ratio != null && req.body.options.electronic_signature != null

newCourse変数を作成する場所を次のように変更します

let newCourse = {
    "name": req.body.name,
    "type": req.body.type, //1: Classroom session enabled 2. No Classroom session 
    "discipline": req.body.discipline,
    "price_options": req.body.price_options, //Registrations allowed with deposits or not?
    "price": req.body.price,
    "addon_prompt": req.body.addon_prompt,
    "addons": req.body.addons, //add addons api values will be sent here 
    "ship_price": req.body.ship_price,
    "keycode_bank": req.body.keycode_bank, //Keycode bank value will be sent here
    "card_type": req.body.card_type, //Card type value will be sent here
    "options": {
        "certificate_prompt": req.body.options.certificate_prompt,
        "student_to_instructor_ratio": req.body.options.student_to_instructor_ratio,
        "student_to_manikin_ratio": req.body.options.student_to_manikin_ratio,
        "electronic_signature": req.body.options.electronic_signature
    }
}

これで、サンプルデータを送信できます。

{
    "name": "req.body.name",
    "type": "req.body.type", 
    "discipline": "req.body.discipline",
    "price_options": "req.body.price_options",
    "price": "req.body.price",
    "addon_prompt": "req.body.addon_prompt",
    "addons": "req.body.addons",
    "ship_price": "req.body.ship_price",
    "keycode_bank": "req.body.keycode_bank", 
    "card_type": "req.body.card_type", 
    "options": {
        "certificate_prompt": "req.body.certificate_prompt",
        "student_to_instructor_ratio": "req.body.student_to_instructor_ratio",
        "student_to_manikin_ratio": "req.body.student_to_manikin_ratio",
        "electronic_signature": "req.body.electronic_signature"
    },
    "ceu_credits": "req.body.ceu_credits",
    "description": "req.body.description",
    "confirm_email": "req.body.confirm_email"

}

郵便配達員と一緒に、それはうまくいくはずです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

1つのテキストフィールドの機能語を置き換えますが、複数のフィールドでは機能しません

分類Dev

Elastic Searchは、複数のフィールドを1つのフィールドにマップします

分類Dev

SQLクエリ-1つのレコードに複数のフィールドを結合します

分類Dev

複数のフィールドのカウント機能を使用してSQLにアクセスする

分類Dev

複数の行を1つのフィールドに連結します

分類Dev

SQLは、異なるフィールドに基づいて複数の行フィールドを1つのレコードに結合します

分類Dev

Mapstructは、1つのフィールドを複数のターゲットフィールドに、またはその逆にマップします。

分類Dev

Kendo UI グリッドは、複数のフィールドを 1 つの列に表示します。

分類Dev

MongoDBは、1つの$ addToSetに複数のフィールドを追加できますか?

分類Dev

ReactJSは複数の入力フィールドを動的に追加します

分類Dev

クラウド関数からFirestoreドキュメントのフィールドを削除します

分類Dev

LINQを使用して複数のフィールドを1つのフィールドに結合する方法

分類Dev

AngularJSは、1つのフィールドを使用して複数のキーワードを検索します

分類Dev

UIMA Rutaは、複数のフィールドにラベルを作成します

分類Dev

Java GUIは、1つのボタンを使用して複数のテキストフィールドをテキストファイルに追加しますか?

分類Dev

php / mysqlは、複数の同一フィールドを持つ1つのテーブルをクエリし、2番目のテーブルのフィールドごとに1つの一意のエントリを作成します

分類Dev

Firebase-クラウド機能を使用して特定のFirestoreドキュメントフィールドをターゲットにする

分類Dev

フィールド値の更新時にfirestoreクラウド関数をトリガーする方法は?

分類Dev

複数の入力フィールドを追加/削除します

分類Dev

クラスAは複数のJSONフィールドを宣言します

分類Dev

forループでjQueryの複数の入力フィールドにクリック関数を追加すると、期待どおりに機能しない

分類Dev

Firestoreの同じフィールドに複数の値を追加する方法

分類Dev

djangoフォームはフィールドに複数のウィジェットを使用します

分類Dev

grails:1つのフィールド、複数のクラス

分類Dev

複数の入力フィールドを追加するjqueryが機能していません

分類Dev

複数の入力フィールドを追加するjqueryが機能していません

分類Dev

1つのフィールドでグループ化し、複数のフィールドを表示する(MySQL)

分類Dev

Gradle-jacocoタスクは、Springアプリの実行時に合成フィールドを追加し、クラスで宣言されたフィールドの数をカウントするテストの失敗につながります

分類Dev

Woocommerce3の複合日付フィールドとして3つのチェックアウト選択フィールドを追加します

Related 関連記事

  1. 1

    1つのテキストフィールドの機能語を置き換えますが、複数のフィールドでは機能しません

  2. 2

    Elastic Searchは、複数のフィールドを1つのフィールドにマップします

  3. 3

    SQLクエリ-1つのレコードに複数のフィールドを結合します

  4. 4

    複数のフィールドのカウント機能を使用してSQLにアクセスする

  5. 5

    複数の行を1つのフィールドに連結します

  6. 6

    SQLは、異なるフィールドに基づいて複数の行フィールドを1つのレコードに結合します

  7. 7

    Mapstructは、1つのフィールドを複数のターゲットフィールドに、またはその逆にマップします。

  8. 8

    Kendo UI グリッドは、複数のフィールドを 1 つの列に表示します。

  9. 9

    MongoDBは、1つの$ addToSetに複数のフィールドを追加できますか?

  10. 10

    ReactJSは複数の入力フィールドを動的に追加します

  11. 11

    クラウド関数からFirestoreドキュメントのフィールドを削除します

  12. 12

    LINQを使用して複数のフィールドを1つのフィールドに結合する方法

  13. 13

    AngularJSは、1つのフィールドを使用して複数のキーワードを検索します

  14. 14

    UIMA Rutaは、複数のフィールドにラベルを作成します

  15. 15

    Java GUIは、1つのボタンを使用して複数のテキストフィールドをテキストファイルに追加しますか?

  16. 16

    php / mysqlは、複数の同一フィールドを持つ1つのテーブルをクエリし、2番目のテーブルのフィールドごとに1つの一意のエントリを作成します

  17. 17

    Firebase-クラウド機能を使用して特定のFirestoreドキュメントフィールドをターゲットにする

  18. 18

    フィールド値の更新時にfirestoreクラウド関数をトリガーする方法は?

  19. 19

    複数の入力フィールドを追加/削除します

  20. 20

    クラスAは複数のJSONフィールドを宣言します

  21. 21

    forループでjQueryの複数の入力フィールドにクリック関数を追加すると、期待どおりに機能しない

  22. 22

    Firestoreの同じフィールドに複数の値を追加する方法

  23. 23

    djangoフォームはフィールドに複数のウィジェットを使用します

  24. 24

    grails:1つのフィールド、複数のクラス

  25. 25

    複数の入力フィールドを追加するjqueryが機能していません

  26. 26

    複数の入力フィールドを追加するjqueryが機能していません

  27. 27

    1つのフィールドでグループ化し、複数のフィールドを表示する(MySQL)

  28. 28

    Gradle-jacocoタスクは、Springアプリの実行時に合成フィールドを追加し、クラスで宣言されたフィールドの数をカウントするテストの失敗につながります

  29. 29

    Woocommerce3の複合日付フィールドとして3つのチェックアウト選択フィールドを追加します

ホットタグ

アーカイブ