ノードREDでMongoDB用の小さなREST-APIを作成しました。Node-RED REST-APIで番号をフィルタリングする方法
これは正常に動作します:<node-red-url>:<node-red-port>/rest/demo
は私にすべてのエントリを示します。
結果をフィルタリングすることもできます。?userName=demo
には、{userName: "demo"}
というエントリのみが表示されます。
私のDBにはいくつかの値があります。何か{weight: 10}
のようなものです。これは、{weight: "10"}
ではありません。
ここでは、エントリだけを入力します。{weight: 10}
です。しかし、私が?weight=10
を追加すると、転送されたパラメータが10
を"10"
に変換します。私のweight
の値はすべて数字であり、文字列ではないので、ヒットしません。
何とかフィルタを付けるように付録をweight
に変更できますか?あるいは、私はRESTロジックを改良しなければならないのですか?
//編集:私はいくつかのより多くのサーバ・ロジックでこれを固定 UPDATE
:
[{"id":"c4a27b53.59303","type":"mongodb in","z":"99225255.0516b8","mongodb":"7e071505.7198bc","name":"","collection":"demo","operation":"find","x":660,"y":580,"wires":[["852d2853.264698"]]},{"id":"af5a916a.08366","type":"function","z":"99225255.0516b8","name":"parseQuery","func":"msg.payload = (msg.req.query);\n\nmsg.limit = 100;\nmsg.skip = 0;\n\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":580,"wires":[["c4a27b53.59303"]]},{"id":"6b0b1b4b.eb8b2c","type":"http in","z":"99225255.0516b8","name":"","url":"/rest/demo","method":"get","swaggerDoc":"","x":120,"y":580,"wires":[["af5a916a.08366"]]},{"id":"852d2853.264698","type":"http response","z":"99225255.0516b8","name":"","x":950,"y":580,"wires":[]},{"id":"7e071505.7198bc","type":"mongodb","z":"","hostname":"192.168.100.166","port":"27017","db":"training","name":"debianTraining"}]
// EDIT2:
これは以下のように私の流れが見えるものですif (msg.payload.hasOwnProperty('weight')) {
msg.payload.weight = parseInt(msg.payload.weight);
}
「greate」を検索するためにさらに2つのケースが追加されました
if (msg.payload.hasOwnProperty('weightG')) {
msg.payload = {"weight": {$gt: parseInt(msg.payload.weightG)}};
delete msg.payload['weightG'];
}
if (msg.payload.hasOwnProperty('weightL')) {
msg.payload = {"weight": {$lt: parseInt(msg.payload.weightL)}};
delete msg.payload['weightL'];
}
これは、これまで正常に動作します: "より」と" 低いよりも、R。
おそらく、ここであなたのフローに関する詳細をお知らせください。スクリーンショットまたはエクスポートされたフローので、あなたがすでに結んでいるものを見ることができます – hardillb
私はちょうど質問を編集し、フローを追加しました – user2699453