是否有可能将 postgreSQL 直接连接到 Javascript?

发布于 2024-10-17 14:39:19 字数 30 浏览 1 评论 0原文

无需使用 php、python 或 odbc?

without having to use php, python or odbc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

日裸衫吸 2024-10-24 14:39:20

我从未使用过 PostgreSQL,但据我所知,数据库需要有效的凭据(用户名和密码)才能访问它们。
使用 JavaScript,您无法隐藏用户名和密码,因为脚本会发送到客户端。因此,从理论上讲,如果您能做到这一点,任何客户端都可以运行查询,并对您的数据库执行任何他们想要的操作。

无论如何,您无法从客户端访问数据库。

I never worked with PostgreSQL, but as far as I know Databases require a valid credentials (username and password) to access them.
With JavaScript you have no way of hiding the username and password, as the script is sent to the client. So theoretically if you could do that, any client would be able to run queries, and do whatever they want with your database.

Anyways, you cannot access a database from the client side.

乖不如嘢 2024-10-24 14:39:20

这是可能的。请看下面的代码。在使用它之前,您应该将 Node.js 更新到 7.6.0 或更高版本。您可以通过仅调用 main(yourQuery) 函数来使用 Postgresql。在谷歌上找到了它。

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\'') 

It is possible. Please see following code. Before using it, you should update Node.js to 7.6.0 or higher. You can use Postgresql by calling only main(yourQuery) function. Found it on 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\'') 
但可醉心 2024-10-24 14:39:20

没有。 Javascript 仅适用于客户端。您需要某种服务器端语言/界面。

Nope. Javascript is client-side only. You need some sort of server-side language/interface.

安静 2024-10-24 14:39:19

您可以从 https://github.com/creationix/postgres-js 获取 Postgres 的 JS 驱动程序,

这是专门设计的与 Node.js 一起使用。不要指望能够找到可以在网络浏览器中运行客户端的东西。

You can get a JS driver for Postgres from https://github.com/creationix/postgres-js

This one is designed for use with node.js. Don't expect to be able to find something you can run client side in a web browser.

高跟鞋的旋律 2024-10-24 14:39:19

我使用过 Postgrest (postgrest.com)。

“PostgREST 是一个独立的 Web 服务器,可将您的 PostgreSQL 数据库直接转换为 RESTful API。”

然后你可以使用 url 进行查询,返回 json 格式的数据。

I have used Postgrest (postgrest.com).

"PostgREST is a standalone web server that turns your PostgreSQL database directly into a RESTful API."

Then you can make a query with a url which returns data in json format.

玩世 2024-10-24 14:39:19

不,请记住,Javascript 仅在浏览器中使用时才在客户端工作,而数据库只能从服务器端连接。因此,您需要调用 PHP、Python 或其他服务器端语言的服务器端脚本才能获取结果。

No, keep in mind that Javascript works client side only when used in a browser while a database can only be connected from server side. Thus you will need to call a serverside script in PHP, Python or another server-side language in order to get to the results.

一刻暧昧 2024-10-24 14:39:19

是的,如果你的 JavaScript 在 Node.js 上运行,这是可能的。这是连接器

Yes, it is possible if your javascript runs on node.js. Here is connector.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文