As far as I know Node Red editor saves the current flow(the flow you see when you open the editor) in flows.json file inside C/[username]/.node-red folder by default.
Can I force it to read and display the flow from MongoDB or a different file instead of flows.json when it started?
Alternatively, is there a way to get flows.json(the same json you get when you click export) with a node and send it as a msg.payload?
Yes, with a storage driver. e.g: GitHub - adibenmati/node-red-mongo-storage-plugin: Node Red Mongo Storage Plugin
Since it is a file, on the file system, yes:
file in -> JSON node -> wherever
Thanks for all your answers so far.
So if I understood correctly, when I add an entry (the flow i want to be displayed) to local mongo, that flow will be displayed when I started Node Red. Instead of the latest one I deployed, right?
I didn't understand what to do with the information in the first link. I'm currently running node red on base directory with "node red.js" command. Should I put the node-red-app provided in the same directory and run Node Red with the command "node node-red-app.js?" after setting up a local Mongo DB?
What parts don't you understand? The link provides all information necessary to get up and running with that plugin.
Can I ask?
Why do you want to save the flows in a mongo database? What is the goal?
From what I understand I need to define my own red.js which I use to run Node Red Editor. I used the one provided in the github link above. And replaced Mongo-URL with my own DB's. Now, before running Node-RED it connects to my db but how do I save the flows file into and load from my MongoDB collection? It still uses the flows file in user directory.
You can run node-red with commandline options - which port and which flows file.
You cannot use node-red to read your mongodb get all the flows and run it as such.
You could get specific flow(s) from mongo and using the node-red api to apply the flow.
I'm currently running node red on base directory with "node red.js"
node-red [options] or
node-red-start (depending how you installed it)
Why? Just run node-red.
Then you are not doing it right.
As the instructions say.
Firstly, require the module:
npm install --save node-red-mongo-storage-plugin
Then, in your settings, add:
After adding your settings, start node-red.
one more time
If you answer this , we may have alternative solutions or best practices!
A storage plugin such as the mongo one, saves and loads flows directly from a different source. You might be saying the same thing but i read your statement as "it cannot be done"
For example, FlowForge uses this for saving all users flows from all the Node-RED instances into a SQLITE or PostgreSQL DB out of the box (depending on your choices)
Ah ok i was not aware of that one, nice!
I want multiple users to work on the same flow, while running different node-red instances simultaneously.
Currently I am running 2 Node-Red instances in different ports locally. When first started, both of them displays the flow I stored in MongoDB. Let's assume there is a flow in json format with 3 nodes in MongoDB. If I remove one of the nodes in instance A via the editor, MongoDB overwrites flows.json collection to have 2 nodes. But, when I refresh my page in instance B, there are still 3 nodes instead of 2. I want the changes I've made in instance A to be reflected on instance B.
This is something you would have to do yourself. Alternatively, you can already do this in FlowForge using devices and / or the pipelines features.
Thank you Steve. You've been really helpfull.