06-设置数据库
原文链接:https://nextjs.org/learn/dashboard-app/setting-up-your-database (opens new window)
在您可以继续使用 dashboard 之前,你需要一些数据。
在本章中,您将使用@vercel/postgres
设置PostgreSQL数据库。如果你已经熟悉PostgreSQL,并且更喜欢使用自己的数据库,你可以跳过这一章,自己设置。否则,让我们继续!
# 本章目标
- 推送项目代码到github
- 建立一个Vercel帐户并链接您的GitHub回购以进行即时预览和部署。
- 创建项目并将其链接到Postgres数据库。
- 使用seedjs为数据库设定数据。
# 创建GitHub存储库
首先,让我们将您的存储库推送到Github(如果您还没有这样做的话)。这将使您的数据库设置和部署更加容易。 如果您需要帮助设置存储库,请参阅GitHub上的此指南 (opens new window)。
# 创建Vercel帐户
访问vercel.com/signup (opens new window)创建帐户。选择免费的“hobby”计划。选择继续使用GitHub连接您的GitHub和Vercel帐户。
# 连接并部署您的项目
接下来,您将进入这个屏幕,在那里您可以选择并导入刚刚创建的GitHub存储库:
命名您的项目,然后单击“部署”。 好极了🎉 现在已部署您的项目。 通过连接您的GitHub存储库,每当您将更改推送到主分支时,Vercel将自动重新部署您的应用程序,无需任何配置。打开拉取请求时,您还可以进行即时预览,以便尽早发现部署错误,并与团队成员共享项目预览以获得反馈。
# 创建Postgres数据库
接下来,要设置数据库,请单击“**Continue to Dashboard**
”,然后从项目面板中选择“Storage”选项卡。选择Connect Store → Create New → Postgres → Continue.
接受条款,为数据库指定名称;并确保您的数据库区域设置为Washington D.C(iad1)-这也是所有新Vercel项目的默认区域。
通过将数据库放置在同一区域或靠近应用程序代码【这里可以选择一个亚洲的】,可以减少数据请求的延迟。
特别提示:一旦数据库区域初始化,就不能更改它。如果您希望使用不同的区域,则应在创建数据库之前进行设置。
连接后,导航到.env.local
tab,点击**Show secret**
和**Copy Snippet**
,复制出来
导航到代码编辑器并重命名文件 .env.example
为.env
,粘贴从Vercel复制的数据库密码内容。
重要的提示: 查看
.gitignore
文件确保已经添加了.env
的配置,这个就避免将密码配置文件上传到github。
最后,在您的终端中运行pnpm i @vercel/postgres
来安装 [Vercel Postgres SDK](https://vercel.com/docs/storage/vercel-postgres/sdk).
# 初始化数据库
现在您的数据库已经创建,让我们使用一些初始数据对其进行最初设置。这将创建您在构建仪表板时使用一些数据。
在项目的/scripts
文件夹中,有一个名为seed.js
的文件。此脚本包含创建和设定最初数据的说明invoices
、customers
、user
、revenue
表。
如果您不了解代码所做的一切,请不要担心,但要给您一个概述。该脚本使用SQL创建表,并在创建表后使用placeholder-data.js
文件中的数据填充表。
接下来,在您的package.json文件中,将seed行添加到脚本中:
"scripts": {
"build": "next build",
"dev": "next dev",
"start": "next start",
"seed": "node -r dotenv/config ./scripts/seed.js"
},
2
3
4
5
6
这是将执行seed.js
的命令。
现在,运行pnpm seed
。您应该在终端中看到一些console.log
日志消息,让您知道脚本正在运行。
# 浏览数据库
让我们看看您的数据库是什么样子的。返回到Vercel,然后单击侧导航上的数据。
在本节中,您将找到四个新表:users, customers, invoices, and revenue。
通过选择每个表,您可以查看其记录,并确保条目与placeholder-data.js
文件中的数据对齐。
# 执行查询
您可以切换到“查询”选项卡以与数据库交互。本节支持标准SQL命令。
例如输入DROP TABLE customers
将删除“客户”表及其所有数据,所以要**小心**!
让我们运行您的第一个数据库查询。将以下SQL代码粘贴并运行到Vercel接口中:
SELECT invoices.amount, customers.name
FROM invoices
JOIN customers ON invoices.customer_id = customers.id
WHERE invoices.amount = 666;
2
3
4