启动数据库postgresql
创建数据目录 (Windows Toolbox省)
- 在项目目录里创建
blog-data
目录 -
.gitignore
里添加/blog-data/
启动 PostgreSQL
- 一句命令启动pg:
docker run -v "$PWD/blog-data":/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=blog -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:12.2
以下是 Windows 旧版 Docker 客户端(Toolbox)的命令(推荐 Windows 用户使用这一版客户端,很稳)
docker run -v "blog-data":/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=blog -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:12.2
如果报错,可以看这篇教程
-
docker ps -a
这句话可以查看容器运行状态 -
docker logs 容器id
这句话可以查看启动日志
验证 pg
进入docker容器
docker exec-it容器id bash
进入pg命令行
psql -U blog -W
- 我设置了不需要密码,所以直接回车即可
如果你需要密码可在
docker run选项里的 -e POSTGRES_HOST_AUTH_ME THOD=trust 替换成-e POSTGRES_PASSWORD=123456
执行pg命令
-
\l
用于list databases,目前有一个blog数据库 -
\c
用于 connect to a database -
\dt
用于display tables,目前我们没有tables -
\q
用于退出
创建数据库
用SQL来创建数据库
- 因为TypeORM 没有提供单纯创建数据库的API(差评)
CREATE DATABASE blog_development ENCODING 'UTF8' LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';
- 我们需要创建三个数据库:开发、测试、生产
- 对应英文:development、test、production
- 最终结果得到三个数据库
安装 TypeORM
步骤
- 打开官网,点击Getting Started
- 找能运行的代码
结果
- 先
git commit -m 'install pg'
提交代码 - 安装依赖:
yarn add typeorm reflect-metadata @types/node pg
- 然后修改
tsconfig
里面添加
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
- 注意,这里要
git commit -m 'add typeorm'
一下 - 然后
npx typeorm init --database postgres
- 重要:然后把一些文件还原一下(WebStorm或命令行)
git checkout HEAD -- tsconfig.json
-
最后修改
ormconfig.json
和src/index.ts
如果npx typeorm失败就改成
./node_modules/.bin/typeorm
连接数据库
步骤
- 选做:升级 Node.js到v14
- 安装 @babel/cli
yarn add @babel/cli
npx babel ./src --out-dir dist --extensions ".ts,.tsx"
- 根据错误提示搜索答案
yarn add --dev @babel/plugin-proposal-decorators
去 Next.js官网查看.babelrc默认配置,复制,创建.babelrc
,添加插件
{
"presets": [
"next/babel"
],
"plugins": [
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
]
]
}
- 重新运行刚刚失败的命令
- 得到dist里面的JS,运行node dist/index.js根据错误提示再加上数小时的搜索,修改ormconfig
- 重新运行 node dist/index.js
- 成功看见connection对象即为成功