Remplir un Dropdown node avec une requette SQL

Bonjour tout le monde,

Je suis en train de créer un Dashboard node red pour saisir mes récoltes de légumes.

Pour cela j’ai une base de données MariaDB avec plusieurs tables, contenant les especes végétales les varietés et les poids et dates des récoltes.

Dans le dashboard je veux remplir les Dropdown avec les Valeurs issues de la base de données.

Si l’on prend l’exemple des varietes

Voici la table varietes (qui pour l’instant est vide car je commence):
variete
Voici ce que ça donne une fois le dropdown rempli:
Capture

Le flow utilisé est le suivant:

[{"id":"cf603f65529f287a","type":"ui_dropdown","z":"78beffefde79b532","name":"","label":"Variete","tooltip":"","place":"Select option","group":"952353814ef760b4","order":0,"width":0,"height":0,"passthru":true,"multiple":false,"options":[],"payload":"","topic":"topic","topicType":"msg","className":"","x":610,"y":80,"wires":[["52987c9c001beb60"]]},{"id":"78a8d7d7f9aa3834","type":"debug","z":"78beffefde79b532","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":610,"y":160,"wires":[]},{"id":"52987c9c001beb60","type":"ui_text","z":"78beffefde79b532","group":"952353814ef760b4","order":4,"width":0,"height":0,"name":"","label":"resultat select variete","format":"{{msg.payload}}","layout":"row-spread","className":"","x":800,"y":80,"wires":[]},{"id":"aa7fef99a705dd61","type":"mysql","z":"78beffefde79b532","mydb":"f63aa2c6ee122151","name":"","x":270,"y":80,"wires":[["78434ed6cb3d168d","4656f8d25ec9cb95"]]},{"id":"78434ed6cb3d168d","type":"debug","z":"78beffefde79b532","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":430,"y":160,"wires":[]},{"id":"6c79143253a50f3b","type":"inject","z":"78beffefde79b532","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Select Variete From Varietes;","payload":"","payloadType":"date","x":120,"y":80,"wires":[["aa7fef99a705dd61"]]},{"id":"4656f8d25ec9cb95","type":"function","z":"78beffefde79b532","name":"","func":"let data = msg.payload;\nlet i = 0;\nlet arr = [];\n\nwhile(data[i] != null) \n{\n    arr[i] = {[Object.values(msg.payload[i])]: Object.values(msg.payload[i])}\n    i++;\n}\n\nmsg.options = arr;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":80,"wires":[["cf603f65529f287a","78a8d7d7f9aa3834"]]},{"id":"952353814ef760b4","type":"ui_group","name":"Saisie récolte","tab":"bc7a10043eb66f39","order":1,"disp":true,"width":"10","collapse":false,"className":""},{"id":"f63aa2c6ee122151","type":"MySQLdatabase","name":"","host":"127.0.0.1","port":"3306","db":"DBPlantes","tz":"","charset":"UTF8"},{"id":"bc7a10043eb66f39","type":"ui_tab","name":"Potager","icon":"local_florist","order":1,"disabled":false,"hidden":false}]

Ce qui sort du noeud function, avec payload contenant le résulstat du noeud sql et options contenant la mise en forme pour le noeud Dropdown:

Le code du noeud function

let data = msg.payload;
let i = 0;
let arr = [];

while(data[i] != null) 
{
    arr[i] = {[Object.values(msg.payload[i])]: Object.values(msg.payload[i])}
    i++;
}

msg.options = arr;

return msg;

J’ai galéré pour en arriver à ce que je vous montre car je ne maitrise ni node red ni le javascript, mais je suis sur qu’il doit y avoir une manière plus propre et optimisée de faire cela.

C’est donc ça ma question, qui sait faire mieux ? et surtout comment ? :stuck_out_tongue:

Merci

Si certains veulent tester voici ce qui sort du noeud SQl:

{"_msgid":"602f7ffca42f12f6","payload":[{"Variete":"black beauty"},{"Variete":"blanche d'égypte"},{"Variete":"striato d'italia"}],"topic":"Select Variete From Varietes;"}