2011-02-17 18 views

Respuesta

-4

No. Javascript es solo del lado del cliente. Necesita algún tipo de lenguaje/interfaz del lado del servidor.

+10

¡Ha habido implementaciones de JavaScript en el servidor durante una década y media! http://en.wikipedia.org/wiki/Server-side_JavaScript – Quentin

+1

Lo sentimos, suponiendo que se refieran a javascript basado en el navegador :) – TNC

3

No, tenga en cuenta que Javascript funciona solo en el lado del cliente cuando se usa en un navegador, mientras que una base de datos solo se puede conectar desde el servidor. Por lo tanto, deberá llamar a un script en el servidor en PHP, Python u otro lenguaje del lado del servidor para obtener los resultados.

+10

JavaScript no es solo del lado del cliente. http://en.wikipedia.org/wiki/Server-side_JavaScript – Quentin

+1

También hay navegadores con bases de datos SQL incorporadas a las que JavaScript tiene acceso. https://developer.mozilla.org/en/storage – Quentin

+1

el caso de uso común es un navegador que sugiero que el interrogador está pidiendo, en ese caso el javascript solo funcionará en el lado del cliente – Thariama

11

Puede obtener un controlador de JS Postgres desde https://github.com/creationix/postgres-js

Éste está diseñado para su uso con node.js. No espere encontrar algo que pueda ejecutar desde el lado del cliente en un navegador web.

+0

¡Eso es bastante interesante! Probablemente sea muy inseguro, pero muchas gracias por compartir :) – Siewers

+6

... por Node.js, no por el navegador. –

+1

Derecha ... pero la pregunta no dice "navegador" – GreenAsJade

2

Nunca trabajé con PostgreSQL, pero hasta donde yo sé Las bases de datos requieren una credencial válida (nombre de usuario y contraseña) para acceder a ellas. Con JavaScript no tiene forma de ocultar el nombre de usuario y la contraseña, ya que la secuencia de comandos se envía al cliente. Entonces, teóricamente, si pudieras hacer eso, cualquier cliente podría ejecutar consultas y hacer lo que quisiera con tu base de datos.

De todos modos, no puede acceder a una base de datos desde el lado del cliente.

+2

PostgreSQL puede autenticarse en base al certificado del cliente por cierto. O Kerberos ... Creo que habría formas seguras de hacerlo desde el navegador, pero tomarían una reflexión adicional. –

3

Sí, es posible si su javascript se ejecuta en node.js. Aquí está connector.

3

He utilizado Postgrest (postgrest.com).

"PostgREST es un servidor web independiente que convierte su base de datos PostgreSQL directamente en una API RESTful".

Luego puede hacer una consulta con una url que devuelve datos en formato json.

0

Es posible. Por favor vea el siguiente código. Antes de usarlo, debe actualizar Node.js a 7.6.0 o superior. Puede usar Postgresql llamando solo a la función main(yourQuery). Lo encontré en Google.

const pg = require('pg') 

// create a config to configure both pooling behavior 
// and client options 
// note: all config is optional and the environment variables 
// will be read if the config is not present 
var config = { 
    user: 'username', // env var: PGUSER 
    database: 'databaseName', // env var: PGDATABASE 
    password: 'Password', // env var: PGPASSWORD 
    host: 'localhost', // Server hosting the postgres database 
    port: 35432, // env var: PGPORT 
    max: 10, // max number of clients in the pool 
    idleTimeoutMillis: 30000 // how long a client is allowed to remain idle before being closed 
} 


const pool = new pg.Pool(config) 

async function query (q) { 
    const client = await pool.connect() 
    let res 
    try { 
     await client.query('BEGIN') 
     try { 
      res = await client.query(q) 
      await client.query('COMMIT') 
     } catch (err) { 
      await client.query('ROLLBACK') 
      throw err 
     } 
    } finally { 
     client.release() 
    } 
    return res 
} 

async function main (queryStr) { 
    try { 
     const { rows } = await query(queryStr); 
     console.log(JSON.stringify(rows)); 
    } catch (err) { 
     console.log('Database ' + err) 
    } 
} 
main('SELECT * FROM user where user = \'123\'') 
Cuestiones relacionadas