I did something very similar on an express app. I'll try to walk you through it as best as possible. Hopefully you can port something like this to a sails app. For the project that I needed this in I didnt use sails for this very reason and a few other. Right tool for the job kind of thing. Also there is a lot of logic missing below that I purposely cut out to keep it simple.
1. Created a file named server.json.
2. Created route to add settings, /settings/addServer
router.post('/addServer', function(req, res, next) {
var aes256 = require('nodejs-aes256');
var config = require('../config/config');
var serverFile = require('../config/server.json');
var fs = require('fs');
var AESKEY = config.nodejsaes256.KEY;
var name, FQDN, port, username, password;
name = req.body.name;
FQDN = req.body.FQDN;
port = req.body.port;
username = req.body.username;
password = aes256.encrypt(AESKEY, req.body.password);
serverFile.push({
name: name,
FQDN: FQDN,
port: port,
username: username,
password: password
});
fs.writeFile("./config/server.json", JSON.stringify(serverFile,null,4);
}
4. Then whenever you would read from the database you would do the opposite as above. For example with mysql:
router.post('/doSomething', function(req, res, next) {
var aes256 = require('nodejs-aes256');
var config = require('../config/config');
var serverFile = require('../config/server.json');
var fs = require('fs');
var AESKEY = config.nodejsaes256.KEY;
var mysql = require('mysql');
var server = {};
for ( var i = 0; i < serverFile.length; i++ ) {
// You must pass serverName here from req.body or somewhere else
if ( serversFile[i].name == serverName ) {
server.name = servers[i].name;
server.FQDN = servers[i].FQDN;
server.port = servers[i].port;
server.username = servers[i].username;
server.password = aes256.decrypt(AESKEY, servers[i].password);
}
}
var connection = mysql.createConnection({
host : server.FQDN,
user : server.username,
password : server.password
});
connection.connect();
}
Hope this helps someone out there. I love sails when I can use it, but sometimes its not the right framework. There is no single framework that can do absolutely everything.
Cheers!