Closed3

bun + cloudflare workers + postgresの例

knaka Tech-Blogknaka Tech-Blog

概要

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;
  },
};
knaka Tech-Blogknaka Tech-Blog

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にクローズされました