¿Se puede configurar una conexión a la base de datos de sails.js mediante un URI o una URL que incorpore las credenciales (host, usuario, contraseña y base de datos) en una sola cadena? ¿O deben asignarse individualmente como sus propios pares clave-valor en la configuración?
En desarrollo, configuré mi aplicación sails.js para usar variables de entorno para las credenciales de la base de datos, como por ejemplo:
en conexiones.js:
someSqlDatabase: { host: process.env.dbHost, user: process.env.dbUserName, password: process.env.dbPassword, database: process.env.db, port: 5432, ssl: true, adapter: 'sails-postgresql'Esto funciona para mi conexión a un recurso heroku-postgresql que asigné a mi proyecto, y puedo configurar manualmente "Config Vars" en mi instancia de heroku, que puedo usar de la misma manera que las variables de entorno en mi local. instancia. Con esto quiero decir que puedo ir a la página del cliente heroku para el recurso de la base de datos, copiar sus credenciales (host, base de datos, usuario y contraseña) en las variables de configuración de la aplicación heroku, individualmente.
El problema es que heroku cambia periódicamente las credenciales y que mis variables de configuración copiadas manualmente quedarán obsoletas y será necesario volver a pegarlas cada vez que esto suceda. Obviamente, esta no es una solución ideal.
Heroku proporciona automáticamente una variable de configuración para el recurso, llamada DATABASE_URL, que se ve así:
"postgres://<user>:<password>@<host>:<port>/<database>"que debe actualizarse automáticamente, cuando cambien las credenciales. Mi problema es que no sé cómo configurar una conexión sails.js para usar esta URL, en lugar de los pares clave/valor individuales "host", "usuario", "contraseña" y "base de datos" en el configuración de conexión
Intenté usar una configuración que omite las claves individuales y usa solo "host", como tal:
someSqlDatabase: { host: process.env.DATABASE_URL, ssl: true, adapter: 'sails-postgresql' }Pero esta conexión falla. He visto este tipo de cadena llamada URI, y probé la configuración de tiro largo:
someSqlDatabase: { uri: proccess.env.DATABASE_URL ssl: true, adapter: 'sails-postgresql' }pero esto también falla. ¿Hay alguna manera de configurar una conexión sails-js con la base de datos postgresql de heroku que usará automáticamente las últimas credenciales? (Estoy usando velas v0.12.3)
No estoy usando PostgreSQL, pero podrías intentar/adaptar esto:
// before/outside module.exports var url = require('url').parse(process.env.DATABASE_URL); // within the config someSqlDatabase: { host: url.host, user: url.auth.split(':')[0], password: url.auth.split(':')[1], database: url.pathname.substring(1), port: url.port, ssl: true, adapter: 'sails-postgresql' }La siguiente es probablemente la forma correcta de hacer esto:
module.exports = { ... default: { ssl: true, url: process.env.HEROKU_POSTGRESQL_SILVER_URL, adapter: 'sails-postgresql' }, ... }dentro de config/env/production.js