Closed3
bun + cloudflare workers + postgresの例
概要
bun 1.0で、cloudflare workers postgresの例
環境
- bun 1.0
- cloudflare workers
- postgres
参考
mkdir projectName
cd projectName
bun init
bun --help
npm add
bun add -d @cloudflare/workers-types wrangler
bun add pg
- package.json, 下記追加
"scripts": {
"start": "wrangler dev src/index.ts",
"deploy": "wrangler deploy --minify src/index.ts"
},
wrangler.toml
name = "bun_3pg"
main = "src/index.ts"
compatibility_date = "2023-09-01"
node_compat = true
[vars]
API_KEY = "123"
DB_NAME = ""
DB_USERNAME = "postgres"
DB_HOST = ""
DB_PORT = "5432"
DB_PASSWORD = ""
- src/index.ts
index.ts
import { Client } from "pg";
export interface Env {
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext
): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === "/favicon.ico")
return new Response(null, { status: 404 });
//
console.log("#start");
console.log("#db.DB_USERNAME=" , env.DB_USERNAME);
console.log("#db.DB_NAME=" , env.DB_NAME);
console.log("#db.DB_HOST=" , env.DB_HOST);
console.log("#db.DB_PORT=" , env.DB_PORT);
const client = new Client({
user: env.DB_USERNAME,
password: env.DB_PASSWORD,
host: env.DB_HOST,
port: env.DB_PORT,
database: env.DB_NAME
})
await client.connect();
const result = await client.query({
text: `SELECT * FROM "Task" LIMIT 10`,
});
console.log(JSON.stringify(result.rows));
const resp = Response.json(result.rows);
ctx.waitUntil(client.end());
return resp;
},
};
dev start
bun run start
deploy
bunx wrangler login
bun run deploy
package.json
{
"name": "bun_3pg",
"module": "src/index.ts",
"type": "module",
"scripts": {
"start": "wrangler dev src/index.ts",
"deploy": "wrangler deploy --minify src/index.ts"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20230914.0",
"bun-types": "latest",
"wrangler": "^3.8.0"
},
"peerDependencies": {
"typescript": "^5.0.0"
},
"dependencies": {
"pg": "^8.11.3"
}
}
このスクラップは2023/09/20にクローズされました