No olvides que en las ciencias informáticas cualquier problema suele tener varias resoluciones, por lo tanto nosotros te enseñaremos lo más óptimo y eficiente.
Solución:
Si está seguro de su conexión string ya está bien formado como el que describió gnerkus, lo último que necesita verificar es su contraseña. Si contiene caracteres no alfanuméricos, tal vez ese sea el que causa el problema. Parece que Node.js o la forma en que javascript funciona causando esto (no estoy muy seguro ya que pg-admin puede conectarse usando mi contraseña inicial sin problemas).
Mi contraseña estaba contenida '+'
y '/'
(adquirido mediante la creación de un json largo lleno de galimatías y luego hash que resulta base64 string) y seguro que recibo el mismo error que el tuyo. Una vez que me deshago de él (de mi conexión string y actualizando la contraseña de mi base de datos), funciona bien.
Oh y … '='
aunque se acepta. Porque parece que el problema está en el proceso de decodificación de URL en el lado de la base de datos. cuando envié '+'
creo que fue reemplazado por ' '
lo que causará una contraseña incorrecta. Y el '/'
estaba causando una URL mal formada, que es la causa raíz de nuestro error (que dice no encontrado). Echale un vistazo a éste ejemplo.
postgres://username:sdkadady88da8+8ahdajd/[email protected]/database
Estoy seguro de que te darás cuenta de que hay más '/'
lo que hará que la URL incorrecta se descomponga. Asi que, protocol:// user:[email protected] / database
cambiado en protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish]
por ese extra '/'
.
Si su colega que accede a él usando JSF puede editar su conexión string, sugiero actualizar la contraseña a una que sea aceptada por ambos. Si no pueden, debe crear otro usuario/rol con el mismo derecho de acceso pero una contraseña diferente que se pueda usar desde Node.js.
EDITAR: O mejor aún, de acuerdo con la discusión aquí, intente codificar la parte de la contraseña de su conexión string. Dicen que funciona. No me molesté en probarlo porque ya cambié mi contraseña. Dado que todavía tiene este problema, es posible que desee probarlo primero antes de seguir una de mis dos sugerencias anteriores.
El puerto predeterminado para una conexión de base de datos de Postgres es 5432. La base de datos de Postgres en AWS probablemente se esté ejecutando en ese puerto. Asimismo, la conexión string debe estar en este formato:
var conString = “postgres://nombre de usuario:[email protected]/base de datos”;
como se define en la documentación de node-postgres. Deberías actualizar tu conexión. string para:
var conString = "postgres://someuser:[email protected]:5432/people";
Asegúrese de que su URL no contenga http://