

テラテイルにて質問させて頂いておりますが、投稿させてください。  
<https://teratail.com/questions/120751>

### 前提・実現したいこと

Requestで送信したパラメータから、配列でセットされたデータを取得したい。

開発環境  
送信側 Java Idea  
Cloud側 Javascript Cloud Function

### 発生している問題・エラーメッセージ

配列の外の値は取得できて、データストアに登録できている。

配列でセットしたパラメータを、For文で取得処理を行っているが値が取れない。  
エラーはキャッチされていない。

### 試したこと

値をセットした配列の datas をログで表示したが

[code]

    models.dto.functions.GoodPricesDetailDto@96b7b12
    
[/code]

と表示されるだけで、内容が表示されない。

### 値を設定しているJava

[code]

        //配列用の変数を定義
        List<GoodPricesDetailDto> goodsPriceDteailDtoList = new ArrayList<GoodPricesDetailDto>();
    
    
        int no = 1;
        for (GoodsPriceItemForm goodsPriceItemForm : goodsPriceForm.getPriceItems()) {
    
            if (!StringUtils.isEmpty(goodsPriceItemForm.getPriceItemName())) {
    
                com.eaio.uuid.UUID priceItemId = new com.eaio.uuid.UUID();
    
                MGoodsPriceDetails mGoodsPriceDetails = new MGoodsPriceDetails();
                mGoodsPriceDetails.setPriceDetailId(priceItemId.toString());
    
                mGoodsPriceDetails.setGoodsId(goodsPriceForm.getGoodsId());
    
                mGoodsPriceDetails.setPriceItemName(goodsPriceItemForm.getPriceItemName());
                mGoodsPriceDetails.setOrderNo(goodsPriceItemForm.getOrderNo());
                mGoodsPriceDetails.setPriceTypeId(goodsPriceItemForm.getPriceTypeId());
                mGoodsPriceDetails.setUnitPrice(Double.parseDouble(goodsPriceItemForm.getUnitPrice()));
                mGoodsPriceDetails.setOrderNo(no);
                mGoodsPriceDetails.save();
    
                //ここから　配列をセットしている
                //Cloud Function の準備 
                GoodPricesDetailDto goodPricesDetailDto = new GoodPricesDetailDto();
                goodPricesDetailDto.setGoodsId(mGoodsPriceDetails.getGoodsId().toString());
                goodPricesDetailDto.setActionType(actionTypeFlg);
                goodPricesDetailDto.setOrderNo(mGoodsPriceDetails.getOrderNo().toString());
                goodPricesDetailDto.setPriceTypeId(mGoodsPriceDetails.getPriceDetailId());
                goodPricesDetailDto.setPriceItemName(mGoodsPriceDetails.getPriceItemName());
                goodPricesDetailDto.setUnitPrice(String.valueOf(mGoodsPriceDetails.getUnitPrice()));
                //goodPricesDetailDto.setCreatedAd(DateUtils.toString(mGoodsPriceDetails.getCreatedAt(), Const.DB_DATE_FULL_FORMAT));
                goodPricesDetailDto.setCreatedAd(mGoodsPriceDetails.getCreatedAt().toString());
    
                goodsPriceDteailDtoList.add(goodPricesDetailDto);
                //ここまで
            }
            no++;
        }
    
    
        // Cloud Functionへ
        GoodsPriceDto goodsPriceDto = new GoodsPriceDto();
    
        goodsPriceDto.setGoodsId(goodsPriceForm.getGoodsId().toString());
        goodsPriceDto.setManagementsFree(String.valueOf(mGoodsPrices.getManagementFee()));
        goodsPriceDto.setActionType(actionTypeFlg);
        goodsPriceDto.setUserId(userId.toString());
        goodsPriceDto.setPrice(String.valueOf(mGoodsPrices.getPrice()));
        goodsPriceDto.setPaidPayment(String.valueOf(mGoodsPrices.getPaidPayment()));
        goodsPriceDto.setManagementsFree(String.valueOf(mGoodsPrices.getManagementFee()));
        goodsPriceDto.setCreatedAd(mGoodsPrices.getCreatedAt().toString());
    
    　　　//値をセットした配列を代入する
        goodsPriceDto.setDatas(goodsPriceDteailDtoList);
    
        String firebaseUrl = ConfigFactory.load().getString("url");
    
        Map map = BeanUtils.describe(goodsPriceDto);
    
        ClientCloudFunctions cloudFunctions = new ClientCloudFunctions();
        cloudFunctions.execute(firebaseUrl, map);
    
        Ebean.commitTransaction();
    } catch (Exception e) {
        Ebean.rollbackTransaction();
    } finally {
        Ebean.endTransaction();
    }
    
[/code]

### 値を取得する Cloud Function側のJSスクリプト

[code]

        // GET パラメーター
        if (req.method == 'POST') {
    
            // DBに接続
            // キーを設定
            // DBに保存する内容を作成する
            const prices = {
                key: datastore.key(['goodsPrices', priceId]),
                data: {
                    goods_id: req.body.goodsId,
                    action_type: req.body.actionType,
                    user_id: req.body.userId,
                    price: req.body.price,
                    minimum_price: req.body.minimumPrice,
                    paid_payment: req.body.paidPayment,
                    managements_free: req.body.managementsFree,
                    created_ad: req.body.createdAd
                }
            };
    
            // データベースへ保存
            datastore.upsert(prices)
                .catch(() => res.status(400).send('goodsPrices upsert err')
                );
    
            for (item in req.body.datas) {
              console.log(req.body.datas)
    
    
              // DBに保存する内容を作成する
                const priceDetails = {
                    key: datastore.key(['goodsPriceDetails', uuid()]),
                    data: {
    
                    // ここから　値の取得ができない
                        bk_goods_prices_id: priceId,
                        goods_id: req.body.datas[item].goodsId,
                        action_type: req.body.datas[item].actionType,
                        order_no: req.body.datas[item].orderNo,
                        price_type_id: req.body.datas[item].priceTypeId,
                        price_item_name: req.body.datas[item].priceItemName,
                        unit_price: req.body.datas[item].unitPrice,
                        created_ad: req.body.datas[item].createdAd
                    // ここまで
    
                    }
                };
    
                // データベースへ保存
                datastore.upsert(priceDetails)
                    .catch(() => {
                        res.status(400).send('goodsPrices upsert err');
                    });
            }
            res.status(200).send('Success: entryed');
    
        } else {
            res.status(400).send('No message defined!');
        }
    };
    
[/code]


CC BY-SA 3.0
2018-04-08T01:22:42.560
43048
2018-04-08T03:11:01.073
2018-04-08T03:11:01.073
19110
28065
question
javascript java google-cloud
Cloud FunctionsでRequestにセットした配列の値が取得できない