express开发api指南--集成ORM(prisma)

9.1 安装依赖

#全局安装prisma
cnpm install prisma -g
#添加开发依赖
cnpm install prisma --save-dev
#创建 Prisma 架构文件模板,设置 Prisma ORM 项目
npx prisma init
#安装并生成 Prisma Client
cnpm install @prisma/client -g
cnpm install @prisma/client --save

9.2 连接数据库
若要连接数据库,您需要将 Prisma 模式中 datasource 块的 url 字段设置为数据库的 连接 URL
prisma/schema.prisma
datasource db { provider = "postgresql" url = env("DATABASE_URL")}
在这种情况下,url 是 通过环境变量设置的,该变量在 .env 中定义
.env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
现在需要调整连接 URL 以指向您自己的数据库。
数据库的 连接 URL 格式 取决于您使用的数据库。对于 PostgreSQL,其格式如下(所有大写部分是您特定连接详细信息的占位符)
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA
9.3 同步数据库表model
npx prisma db pull
内省完成后,你的 Prisma 模式文件已更新
9.4 修改之前的CRUD
以查询为例

//mode: "insensitive" 代表不区分大小写
router.post(Controller + "/search", await (req, res, next) => {
try {
    const data = await prisma.t_msd_msl_2.findMany({
      where: {
        AND: [
          {
            msl_id: {
              contains: req.query.msl_id,
              mode: "insensitive",
            },
          },
          {
            msl: {
              contains: req.query.msl,
              mode: "insensitive",
            },
          },
          {
            floor_life: {
              contains: req.query.floor_life,
              mode: "insensitive",
            },
          },
          {
            unit: {
              contains: req.query.unit,
              mode: "insensitive",
            },
          },
          {
            floor_environment: {
              contains: req.query.floor_environment,
              mode: "insensitive",
            },
          },
          {
            enabled: {
              contains: req.query.enabled,
              mode: "insensitive",
            },
          },
        ],
      }
    });
    res.send(resultInfo(0, data));
  } catch (error) {
    res.send(resultInfo(1, "", error));
  }
});

findMany、findUnique、create等方法参照:
CRUD (参考) | Prisma 文档 - Prisma 中文

posted @ 2024-07-31 15:42  火炬冬天  阅读(17)  评论(0编辑  收藏  举报