I'm using gRPC in node-red and I'm stuck retrieving all the data and editing the data section. Does anyone have a CRUD operation in grpc? I was able to retrieve single data from the server myproto file
syntax="proto3";
service csservice{
rpc getcsdata (csId) returns (csMessage) {}
rpc addcsdata (csMessage) returns (csMessage){}
rpc getall (Empty) returns ( csList) {}
}
message csMessage{
int32 id=1;
string name=2;
int32 age=3;
}
message csId{
int32 id=1;
string name=2;
}
message csList {
repeated csMessage csmessages = 1;
}
message Empty{}
When I try to get all data from server it returns empty array ,this is my flow
[
{
"id": "ec932c56ddd096b9",
"type": "tab",
"label": "Flow 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "15ba13348d662790",
"type": "grpc-response",
"z": "ec932c56ddd096b9",
"name": "Cs response",
"x": 730,
"y": 220,
"wires": []
},
{
"id": "a98e398c9a3b1b2b",
"type": "grpc-register-function",
"z": "ec932c56ddd096b9",
"name": "addcsdata",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "addcsdata",
"x": 140,
"y": 220,
"wires": [
[
"cf7099cb30cff135"
]
]
},
{
"id": "cf7099cb30cff135",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "addcsdataServer",
"func": "msg.call.id = msg._msgid; \nvar csdata=global.get(\"csdata\")\n\n \npayloadname=msg.payload.name\n\n\n// if (msg.payload && msg.payload.name) {\n// // var data={[msg.payload.name] :msg.call.request}\n \n// csdata[msg.payload.name].push(msg.call.request)\n// console.log(\"*********************** csdtaa\")\n// console.log(csdata)\n// } else {\n// global.get(\"csdata\")[msg._msgid] = msg.call.request;\n// }\n\n// if(csdata[payloadname] !==undefined && csdata[payloadname].length===0)\n// csdata.payloadname.push( msg.call.request)\n// else\n// csdata[msg._msgid]=[]\n// csdata[msg._msgid].push( msg.call.request);\n\nif(csdata.hasOwnProperty(payloadname) && Array.isArray(csdata[payloadname]))\ncsdata[payloadname].push( msg.call.request)\nelse{\ncsdata[payloadname]=[]\ncsdata[payloadname].push(msg.call.request)\n}\n \n\n\nvar message = msg.call.request\nmsg.payload = message;\n\n \n global.set(\"csdata\",csdata)\n csdata=global.get(\"csdata\")\n console.log(csdata)\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 410,
"y": 220,
"wires": [
[
"15ba13348d662790"
]
]
},
{
"id": "5972954e044d90fa",
"type": "grpc-call",
"z": "ec932c56ddd096b9",
"name": "",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "addcsdata",
"chain": "",
"key": "",
"x": 514,
"y": 429.99999713897705,
"wires": [
[
"578b34a0f289eb80"
]
]
},
{
"id": "cc29429b4f3600e8",
"type": "inject",
"z": "ec932c56ddd096b9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 154,
"y": 429.99999713897705,
"wires": [
[
"a5b486558c80575e"
]
]
},
{
"id": "578b34a0f289eb80",
"type": "debug",
"z": "ec932c56ddd096b9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 734,
"y": 429.99999713897705,
"wires": []
},
{
"id": "a5b486558c80575e",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "addCsdata",
"func": "msg.payload = { id: 5, age:40, name:\"shyam\" }\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 334,
"y": 429.99999713897705,
"wires": [
[
"5972954e044d90fa"
]
]
},
{
"id": "40bc33837532d605",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "INIT",
"func": "global.set(\"csdata\", {});\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 334,
"y": 109.99999713897705,
"wires": [
[]
]
},
{
"id": "b9755c1b27bb69f3",
"type": "inject",
"z": "ec932c56ddd096b9",
"name": "",
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 174,
"y": 109.99999713897705,
"wires": [
[
"40bc33837532d605"
]
]
},
{
"id": "df4395e81a465b80",
"type": "grpc-response",
"z": "ec932c56ddd096b9",
"name": "Cs response",
"x": 734,
"y": 269.99999713897705,
"wires": []
},
{
"id": "22687709d70b19e6",
"type": "grpc-register-function",
"z": "ec932c56ddd096b9",
"name": "getcsdata",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "getcsdata",
"x": 144,
"y": 269.99999713897705,
"wires": [
[
"bc684a5f07d9cbd4"
]
]
},
{
"id": "bc684a5f07d9cbd4",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "getcsDataServer",
"func": "\nvar csdata=global.get(\"csdata\")\n\npayloadName=msg.payload.name\npayloadId=msg.payload.id\ndata=csdata[payloadName].find(x => x.id ===payloadId )\nmsg.payload = data;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 414,
"y": 269.99999713897705,
"wires": [
[
"df4395e81a465b80"
]
]
},
{
"id": "0624799a7f54b59c",
"type": "grpc-call",
"z": "ec932c56ddd096b9",
"name": "",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "getcsdata",
"chain": "",
"key": "",
"x": 530,
"y": 520,
"wires": [
[
"99c4d0266ca5c3dc"
]
]
},
{
"id": "582d03cf948f34d0",
"type": "inject",
"z": "ec932c56ddd096b9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 160,
"y": 520,
"wires": [
[
"31d5a1733a295c42"
]
]
},
{
"id": "99c4d0266ca5c3dc",
"type": "debug",
"z": "ec932c56ddd096b9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 750,
"y": 520,
"wires": []
},
{
"id": "31d5a1733a295c42",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "getData",
"func": "msg.payload = { id:5,name:'shyam' }\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 340,
"y": 520,
"wires": [
[
"0624799a7f54b59c"
]
]
},
{
"id": "d87c27d595dfc0a0",
"type": "grpc-call",
"z": "ec932c56ddd096b9",
"name": "",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "getall",
"chain": "",
"key": "",
"x": 530,
"y": 580,
"wires": [
[
"dfdb730c683c99bd"
]
]
},
{
"id": "2ff7c18694f9347a",
"type": "inject",
"z": "ec932c56ddd096b9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 160,
"y": 580,
"wires": [
[
"b1e595e7638a336d"
]
]
},
{
"id": "dfdb730c683c99bd",
"type": "debug",
"z": "ec932c56ddd096b9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 730,
"y": 580,
"wires": []
},
{
"id": "b1e595e7638a336d",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "getallData",
"func": "msg.payload={}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 340,
"y": 580,
"wires": [
[
"d87c27d595dfc0a0"
]
]
},
{
"id": "81758e35fb8e9ccc",
"type": "grpc-response",
"z": "ec932c56ddd096b9",
"name": "Cs response",
"x": 734,
"y": 329.99999713897705,
"wires": []
},
{
"id": "b48476b599d0828e",
"type": "function",
"z": "ec932c56ddd096b9",
"name": "getallDataServer",
"func": "// msg.call.id = msg._msgid;\nvar csdata=global.get(\"csdata\")\nmsg.payload = csdata;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 410,
"y": 340,
"wires": [
[
"81758e35fb8e9ccc",
"f7e22e94821c1f6d"
]
]
},
{
"id": "f7e22e94821c1f6d",
"type": "debug",
"z": "ec932c56ddd096b9",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 734,
"y": 369.99999713897705,
"wires": []
},
{
"id": "45d9b9eda1b39f5d",
"type": "grpc-register-function",
"z": "ec932c56ddd096b9",
"name": "getcsdata",
"server": "20fb69c35b753ddd",
"service": "csservice",
"method": "getall",
"x": 140,
"y": 340,
"wires": [
[
"b48476b599d0828e"
]
]
},
{
"id": "20fb69c35b753ddd",
"type": "grpc-server",
"port": "5001",
"name": "CsServices",
"server": "",
"protoFile": "syntax=\"proto3\";\n\nservice csservice{\n rpc getcsdata (csId) returns (csMessage) {}\n rpc addcsdata (csMessage) returns (csMessage){}\n rpc getall (Empty) returns ( csList) {}\n \n \n}\nmessage csMessage{\nint32 id=1;\nstring name=2;\nint32 age=3;\n}\nmessage csId{\n int32 id=1;\n string name=2;\n}\nmessage csList {\n repeated csMessage csmessages = 1;\n }\nmessage Empty{}",
"ca": "",
"caPrivateKey": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEoAIBAAKCAQEAt2BMC+RtDz5W8PVfsD937gQEgjKdSHF9wQd7EKZhBEA7q7+o\r\nXeP7RFjB5Y2vvub0mDIJwSRyNQVjzRjAeoqxVNbQ1qSaSt3cVf6XV8dPVUzqkxCu\r\nvpnBEfAw/bGOQg93BhejOsM2RPE0y/PqpRE8OSr4UWz47zaA7zupFJSmTdLzVN8D\r\nKmQ5ZKcXf6siker7BuD4C9lSN5yGcNRunaZ10KO8ul0qo6++TLmKLNgnK5E+ZWxw\r\nE6CU+cWc/TUSx2Z2BchrTjH7WDQF1It+cwYX/5etSLpS5yES99b64wnenHZdPisu\r\nICyUmKYp8dulj5eYniIjE85mYXl/EhFEvp3LbwIDAQABAoH/LSCFlmegbx/oRWQd\r\nKEJ2QRy7/051Zl6Hk/lDT9WiCmnERX/k7zYrn6Y4EUXM+i3cA5hMzjsp3+JzrQVq\r\nWL3I5hf3TNs1HTd8Aa2lkPR7kYJcN9TjLASqfr+dTtFjMN6da+JlSRDBSjYRyB8+\r\nn2CecXMhqOgoWrYPBNCpy2bJhlz4zqhm0T8bSUFiUK9tug45zXmXXxXbr/cRC/vM\r\n2q9L2dCmSUH875sr4C+oouyCVFdaKH5Mtp+Vr5sCbmVi6OAgw0gbS1ffUdikN9Vz\r\n0Pt1i1pgUwaZkXtkUZiT6w5KLvzxGfiDqVs4YEkAwMSRXkD4b3grt7k1ZMr4xyIt\r\nHn45AoGBAOC++iJH5qWBMZBTBLlOuHqc5Ku91XN0QBF5h3RAjAcNeNamTNcUEHMv\r\nAbNCWXhj2/5HcOVfYZ8uJNt+n8suiacnMbUlOYgRFw8vHMMQcyb8+iXr/H46XvxZ\r\nxTAxMRxHHYjO7HcJ+6aPMAgAv/eCR1uyPBuyDMESKshas15ytUFlAoGBANDgiqIA\r\nXWD2Tju2hvG/MrHAiOtntbsdeeayBHTtaxdArvXrzjJEEKKOCwBFlnjs4z4We7aP\r\n/LumSJi10vkmBUo+cquxTRtAIS9GCnvKdWCl6w7EwjPI3rHXAfVNv4h4yhkmdRoa\r\nx8Js/sBDTzOYMmrh+/JN3mPRVVsAFPF14xZDAoGAaD2MDOxmeStEDtnCniR6AjzU\r\n/ydMYoFv2esRPYVWrUq9WmnFyBhBTPtngXprvyAqAHWoUmr7/3XKmJfRi87o/8N5\r\nFbjPR2IN3PgQEhWGI3ZAm+gps25lcgw9Ho4iZihB9ZtsKAZUVzugnoWihC1D5a70\r\nnC/oJIDFoSoYed0gXtUCgYAe6l0ahTtM8qe5ptZqSYZTUM/zJ7J6M26reoW2WL2U\r\n/3nl5DTss65SoPt32tTeqREpS2KcLsuVapMsJx1Gyx3VU1DdoKxs8Bz5RkCe+eRN\r\nncEgunaT+5Mad1xO1mcW5+nhtxN1/ai7Wi6KfmvmkwxDTZdg0a2s0Hr1sRloc65c\r\nyQKBgGBL5U7I9WkKjZ+bJPtfzbH7+owfU201IEMGG2inQUrnEckX4LZRpdyf3usx\r\nrUikHwL2sVDe3SbVeXcakcc9TSPj/+VdVrXnfCtouarVki3W17S28UMjN5lqSTNf\r\nayy0GEL9eO7qge3CQrg9nh3+Oe7VbR2kJImRcK+HaZTjb6Ia\r\n-----END RSA PRIVATE KEY-----\r\n",
"cacert": "-----BEGIN CERTIFICATE-----\r\nMIIEBjCCAu6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBjjEwMC4GA1UEAxMnc2Vs\r\nZi1kZWNsYXJlZC1jZXJ0aWZpY2F0ZS1hdXRob3JpdHkub3JnMQswCQYDVQQGEwJD\r\nQTELMAkGA1UECBMCQkMxEjAQBgNVBAcTCVZhbmNvdXZlcjEZMBcGA1UEChMQU2Vs\r\nZi1EZWNsYXJlZCBDQTERMA8GA1UECxMIQ0EgRGVwdC4wHhcNMjIxMDIxMDQyODI0\r\nWhcNMjMxMDIxMDQyODI0WjCBjjEwMC4GA1UEAxMnc2VsZi1kZWNsYXJlZC1jZXJ0\r\naWZpY2F0ZS1hdXRob3JpdHkub3JnMQswCQYDVQQGEwJDQTELMAkGA1UECBMCQkMx\r\nEjAQBgNVBAcTCVZhbmNvdXZlcjEZMBcGA1UEChMQU2VsZi1EZWNsYXJlZCBDQTER\r\nMA8GA1UECxMIQ0EgRGVwdC4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\r\nAQC3YEwL5G0PPlbw9V+wP3fuBASCMp1IcX3BB3sQpmEEQDurv6hd4/tEWMHlja++\r\n5vSYMgnBJHI1BWPNGMB6irFU1tDWpJpK3dxV/pdXx09VTOqTEK6+mcER8DD9sY5C\r\nD3cGF6M6wzZE8TTL8+qlETw5KvhRbPjvNoDvO6kUlKZN0vNU3wMqZDlkpxd/qyKR\r\n6vsG4PgL2VI3nIZw1G6dpnXQo7y6XSqjr75MuYos2CcrkT5lbHAToJT5xZz9NRLH\r\nZnYFyGtOMftYNAXUi35zBhf/l61IulLnIRL31vrjCd6cdl0+Ky4gLJSYpinx26WP\r\nl5ieIiMTzmZheX8SEUS+nctvAgMBAAGjbTBrMAwGA1UdEwQFMAMBAf8wCwYDVR0P\r\nBAQDAgL0MDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMG\r\nCCsGAQUFBwMEBggrBgEFBQcDCDARBglghkgBhvhCAQEEBAMCAPcwDQYJKoZIhvcN\r\nAQEFBQADggEBAFJ8WfTfK+pL68naRx0eD0nUt3XGpFfgP26E7uI2ikViB2nsa2xg\r\nOR8XswIgVBNy4KvDHkbYcW4Rf8ciMeGs6xl0R4QBpvHyhECAYVCx+E0CweTXQPKx\r\nQEHpzy5In3bbs0cf2I0qAC/SoGSv0YDFhsBdC8ltFCVAF0ROd8wyL3wo3XWSBhwX\r\nxvc7dGP9by+woznJDZlL3kZb6QXlZjMWAEQ540fylSUBnHFrulPRSS2J1gyDZWmB\r\nvX8LeEnfIrHnwlr4lPpP9NR8yLE/V80W2EQVhRbYihT6juhwdbQYWv1nGwwHg5p+\r\nbTwJ21PDrba+7ExhYmoh5ypd52hs/vV2RdY=\r\n-----END CERTIFICATE-----\r\n",
"chain": "",
"key": "",
"mutualTls": false,
"localServer": true
}]
I tried logging the list data in the service before sending it to the gpc call and it works fine even thought I got an empty response.
Please help me to get all data from grpc