質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1157閲覧

[node-red][javascript]オブジェクトの存在確認チェックが出来ない

asakura

総合スコア29

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/03/14 09:53

node-redを使い、postされたデータを受け取りjson項目の存在チェックを行うfunctionを記述しています。
下記json項目の中で、department_idが存在する場合と、存在しない場合で規定値を
入れたいのですが、うまく行かず、どのように記述したら良いか、教えて頂けないでしょうか。

json

1// 値が全て揃っている場合 2{ 3 "user_id": "255", 4 "list_flg": "0", 5 "department_id":"1" 6} 7 8// department_idが渡されない場合場合 9{ 10 "user_id": "255", 11 "list_flg": "0" 12}

department_idの存在判定を行うfunction
department_idの判定が行われず、全てmsg.flgに”0”が入ってしまう。

js

1if (typeof msg.payload.department_id== 'undefined') { 2 msg.flg = '0'; // 規定値の代入 3}else{ 4 msg.department_id= msg.payload.department_id; 5 msg.flg = '1'; // 規定値の代入 6} 7return msg;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

HayatoKamonoさんのご指摘通り、そもそも想定されているリクエストが正しくnode-red上に届いていますか?
コード的には問題なく、私のnode-red上では想定されている分岐を行っておりました.

node-redコード

[{"id":"30556f3d.b8414","type":"http in","z":"741556a5.704a88","name":"","url":"/sample","method":"post","upload":false,"swaggerDoc":"","x":110,"y":40,"wires":[["6a13a79f.e59ec8","4193f835.713e78"]]},{"id":"6a13a79f.e59ec8","type":"function","z":"741556a5.704a88","name":"チェック","func":"if (typeof msg.payload.department_id === 'undefined') {\n msg.flg = '0'; // 規定値の代入\n}else{\n msg.department_id = msg.payload.department_id;\n msg.flg = '1'; // 規定値の代入\n}\nreturn msg;","outputs":1,"noerr":0,"x":100,"y":120,"wires":[["e9a76a0f.8f6188","195f1914.a90207","bb9152b6.957a1"]]},{"id":"4193f835.713e78","type":"debug","z":"741556a5.704a88","name":"","active":true,"console":"false","complete":"false","x":296,"y":46,"wires":[]},{"id":"e9a76a0f.8f6188","type":"http response","z":"741556a5.704a88","name":"","statusCode":"","headers":{},"x":90,"y":200,"wires":[]},{"id":"195f1914.a90207","type":"debug","z":"741556a5.704a88","name":"","active":true,"console":"false","complete":"flg","x":300,"y":120,"wires":[]},{"id":"bb9152b6.957a1","type":"debug","z":"741556a5.704a88","name":"","active":true,"console":"false","complete":"department_id","x":330,"y":160,"wires":[]}]

windowsでcurlを実行

curl -H "Content-Type:application/json" -X POST -d "{\"userid\":\"255\",\"list_flg\":\"0\",\"department_id\":\"1\"}" https://<URL>/sample

イメージ説明

イメージ説明

投稿2018/03/16 07:28

編集2018/03/16 07:31
iarik

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asakura

2018/03/16 08:59

node-redでのご確認、ありがとうございました。 ただしく、msg.payload.department_idが届いている事を確認し、msg.flgが返ってくることを確認しました。
guest

0

department_idの判定が行われず、全てmsg.flgに”0”が入ってしまう。

判定がされているから、msg.flg = '0'の行が読まれているのだと思います。

そもそも、受け取っているmsg.payloadにはdepartment_idは存在しているのでしょうか?
if文の前でmsg.payloadの中身を確認してみて、どれにもdepartment_idが含まれていないのであれば、この前工程で上手く行っていないのだと思います。

全てmsg.flgに”0”が入ってしまう

つまり、「全てmsg.flgに”0”が入ってしまう」というよりは、msg.payloadが全て、そもそも、department_idを持っていない可能性はないでしょうか?

追記

もしくは、msg.payloadが実は配列だったりとか?

投稿2018/03/14 10:08

編集2018/03/14 10:56
HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問