TypeORM数据库实践(上)

启动数据库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.jsonsrc/index.ts

    ormconfig.json

  • 如果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对象即为成功
工作流总结
image.png

你可能感兴趣的:(TypeORM数据库实践(上))