CF Pages and PlanetScale

Hey guys! I'm having trouble accessing PlanetScale from within Cloudflare Pages
1 Reply
JustinNoel
JustinNoel2y ago
I'm using it with CF pages and Hono. I wrote a Hono middleware to put the connection details on each request. db-connection.ts
import {connect} from "@planetscale/database";
import {Next} from "hono";
import {AppContext} from "@/types";
import {getUsesMiddleware} from "@/utils/get-uses-middleware";
export const dbConnection = async (c : AppContext, next : Next) => {
const host = c.env.PS_DB_HOST;
const password = c.env.PS_DB_PASSWORD;
const username = c.env.PS_DB_USERNAME;
const usesMiddleware = getUsesMiddleware({url: c.req.url});
if (! usesMiddleware) {
return await next();
}
const connection = connect({host, password, username});
c.set("db", connection);
return await next();
};
import {connect} from "@planetscale/database";
import {Next} from "hono";
import {AppContext} from "@/types";
import {getUsesMiddleware} from "@/utils/get-uses-middleware";
export const dbConnection = async (c : AppContext, next : Next) => {
const host = c.env.PS_DB_HOST;
const password = c.env.PS_DB_PASSWORD;
const username = c.env.PS_DB_USERNAME;
const usesMiddleware = getUsesMiddleware({url: c.req.url});
if (! usesMiddleware) {
return await next();
}
const connection = connect({host, password, username});
c.set("db", connection);
return await next();
};
Example Query
const db = c.get("db");
const query = `
SELECT * FROM sessions
where id = :id
`;
const params = {
id: sessionId
};
const {data, status} = await dbQueryWrapper < SessionsModel > ({db, logs, params: params, query: query});
const session = data ?. rows ?. [0] ?? null;
const db = c.get("db");
const query = `
SELECT * FROM sessions
where id = :id
`;
const params = {
id: sessionId
};
const {data, status} = await dbQueryWrapper < SessionsModel > ({db, logs, params: params, query: query});
const session = data ?. rows ?. [0] ?? null;

Did you find this page helpful?