I'm using the node-red-node-sqlite v1.1.0 node.
And I'm reading my database like so:
[
{
"id": "38680aaa86807ba1",
"type": "http in",
"z": "c35667a7f7c45a02",
"name": "Submit",
"url": "/submit-week",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 170,
"y": 340,
"wires": [
[
"92824352fdd91086"
]
]
},
{
"id": "92824352fdd91086",
"type": "function",
"z": "c35667a7f7c45a02",
"name": "Request",
"func": "msg.topic = `\n SELECT * \n FROM Record \n WHERE Name = $device \n AND strftime('%Y-%W', Time) = $week\n`;\nmsg.payload = [msg.req.query.device, msg.req.query.week];\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 320,
"y": 340,
"wires": [
[
"dc005e1b909b7afe",
"89e49d05e4aa563e"
]
]
},
{
"id": "dc005e1b909b7afe",
"type": "sqlite",
"z": "c35667a7f7c45a02",
"mydb": "1f2058e76f30783c",
"sqlquery": "msg.topic",
"sql": "SELECT * FROM Record\nWHERE Name = device;",
"name": "Read",
"x": 450,
"y": 340,
"wires": [
[
"5d61fd21606aff3d",
"a603f96ecf2e6ce2"
]
]
},
{
"id": "1f2058e76f30783c",
"type": "sqlitedb",
"db": "mydatabasepath.db",
"mode": "RWC"
}
]
When submitting a query, the response from the function node "Request" is as follows:
{
payload: ["E00321BA","2024-48"]
topic:
SELECT *
FROM Record
WHERE Name = $device
AND strftime('%Y-%W', Time) = $time;
}
Passing this to the SQL node produces an empty array in the payload, which shouldn't happen since, if I try this with a manual request using a fixed statement in the same SQLite node:
SELECT * FROM Record
WHERE Name = 'E00321BA'
AND strftime('%Y-%W', Time) = '2024-48';
I'm getting what I expect:
payload: [{"Name":"E00321BA","Count":24,"Time":"2024-11-25 10:46:59"},{"Name":"E00321BA","Count":5,"Time":"2024-11-25 11:49:47"}]
Which is correct.
What's the difference between my flow and the manual "Fixed Statement" setup? And why are the results not the same?