Каждый промис обращает внимание только на первый вызов resolve или reject. То есть в вашем случае при проходе по кластерам резолвится только первый. Соответственно каждый кластер требует отдельного промиса, а сам метод должен возвращать общий, который ждёт их окончания:
dbAudit.getAllServers = function () {
return new Promise(function (resolve, reject) {
dbAudit.query('SELECT "FSDN" AS host, "Listen_Port" AS port, "Instance" AS "clusterName", "Version" AS version FROM "COLLECTE_POSTGRES"')
.then(function (clusters) {
var remotesPromises = clusters.map(function (cluster) {
var remote = new Sequelize('postgres', collector.user, collector.password, {
host: cluster.host,
port: cluster.port,
dialect: 'postgres',
logging: false
});
return getDatabases(remote);
});
Promise.all(remotesPromises).then(function (remotes) {
resolve(remotes);
});
}, reject);
});
};
function getDatabases(remote) {
return new Promise(function (resolve) {
remote.query("SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('template0','template1','postgres','repmgr')")
.then(function (databases) {
resolve({ status: 'success', databases: databases });
}, function (error) {
resolve({ status: 'error', error: error });
});
});
}
А так как промисы чейнятся, то можно упростить код:
dbAudit.getAllServers = function () {
return dbAudit.query('SELECT "FSDN" AS host, "Listen_Port" AS port, "Instance" AS "clusterName", "Version" AS version FROM "COLLECTE_POSTGRES"')
.then(function (clusters) {
var remotesPromises = clusters.map(function (cluster) {
var remote = new Sequelize('postgres', collector.user, collector.password, {
host: cluster.host,
port: cluster.port,
dialect: 'postgres',
logging: false
});
return getDatabases(remote);
});
return Promise.all(remotesPromises);
});
};
function getDatabases(remote) {
return remote.query("SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('template0','template1','postgres','repmgr')")
.then(function (databases) {
return { status: 'success', databases: databases };
}, function (error) {
return { status: 'error', error: error };
});
}