Awe*_*m-o 7 javascript postgresql nuxt.js vercel
我想尝试一下 Vercel 最近添加的这些新存储功能,但无法让 Postgress 工作。我用的是这个模板。它部署得非常好,但是当我尝试在本地运行它时,我不知道该怎么做。这就是我到目前为止所做的:
npm i现在我得到了包含所有静态内容的页面,但没有来自数据库的数据。当我访问localhost:3000/api/get-users时,我收到以下消息:
"VercelPostgresError - 'missing_connection_string': You did not supply a 'connectionString' and no 'POSTGRES_URL' env var was found."
看起来是这样get-users.ts的:
import { createPool, sql } from '@vercel/postgres';
async function seed() {
const createTable = await sql`
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
image VARCHAR(255),
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
`;
console.log(`Created "users" table`);
const users = await Promise.all([
sql`
INSERT INTO users (name, email, image)
VALUES ('Guillermo Rauch', 'rauchg@vercel.com', 'https://pbs.twimg.com/profile_images/1576257734810312704/ucxb4lHy_400x400.jpg')
ON CONFLICT (email) DO NOTHING;
`,
sql`
INSERT INTO users (name, email, image)
VALUES ('Lee Robinson', 'lee@vercel.com', 'https://pbs.twimg.com/profile_images/1587647097670467584/adWRdqQ6_400x400.jpg')
ON CONFLICT (email) DO NOTHING;
`,
sql`
INSERT INTO users (name, email, image)
VALUES ('Steven Tey', 'stey@vercel.com', 'https://pbs.twimg.com/profile_images/1506792347840888834/dS-r50Je_400x400.jpg')
ON CONFLICT (email) DO NOTHING;
`,
]);
console.log(`Seeded ${users.length} users`);
return {
createTable,
users,
};
}
export default defineEventHandler(async () => {
const startTime = Date.now();
const db = createPool();
try {
const { rows: users } = await db.query('SELECT * FROM users');
const duration = Date.now() - startTime;
return {
users: users,
duration: duration
};
} catch (error) {
// @ts-ignore
if (error?.message === `relation "users" does not exist`) {
console.log(
"Table does not exist, creating and seeding it with dummy data now..."
);
// Table is not created yet
await seed();
const { rows: users } = await db.query('SELECT * FROM users');
const duration = Date.now() - startTime;
return {
users: users,
duration: duration
};
} else {
throw error;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题:
Vercel 在他们的网站上提供了一些快速入门代码片段,其中之一是:
import pg from 'pg';
const { Pool } = pg;
const pool = new Pool({
connectionString: process.env.POSTGRES_URL + "?sslmode=require",
})
Run Code Online (Sandbox Code Playgroud)
所以我想我可以在我的代码中做这样的事情:
const db = createPool({
connectionString: process.env.POSTGRES_URL + "?sslmode=require",
});
Run Code Online (Sandbox Code Playgroud)
这会给出以下消息:
"VercelPostgresError - 'invalid_connection_string': This connection string is meant to be used with a direct connection. Make sure to use a pooled connection string or try createClient() instead."
不知道这意味着什么。他们有一些关于这些错误的文档,但他们没有帮助我。此外,这个快速入门指南根本没有帮助我。
这里有人可以帮助我吗?
| 归档时间: |
|
| 查看次数: |
4755 次 |
| 最近记录: |