mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 20:16:35 +00:00
RED.httpNode.post registers a raw express route with no body parser, so req.body was undefined and trigger payloads showed all fields null. Add a zero-dep readJsonBody helper that streams + parses req body.
25 lines
830 B
JavaScript
25 lines
830 B
JavaScript
/**
|
|
* Tiny JSON body reader for trigger nodes.
|
|
*
|
|
* RED.httpNode.post(path, handler) registers a raw Express route with no
|
|
* body parser, so req.body is undefined. Trigger nodes call readJsonBody(req)
|
|
* to get a parsed object (or {} on error / non-JSON).
|
|
*
|
|
* Zero dependencies — avoids relying on Node-RED's bundled body-parser being
|
|
* resolvable from our nodesDir.
|
|
*/
|
|
function readJsonBody(req) {
|
|
return new Promise((resolve) => {
|
|
if (req.body && typeof req.body === "object") return resolve(req.body);
|
|
let data = "";
|
|
req.setEncoding("utf8");
|
|
req.on("data", (c) => { data += c; });
|
|
req.on("end", () => {
|
|
if (!data) return resolve({});
|
|
try { resolve(JSON.parse(data)); } catch { resolve({}); }
|
|
});
|
|
req.on("error", () => resolve({}));
|
|
});
|
|
}
|
|
|
|
module.exports = { readJsonBody };
|