做网站教程下载/站长网

做网站教程下载,站长网,怎么做集团网站,有没有公司做农副产品网站的搭建后端服务 搭建服务拆分下用户服务 增加公共库通用模块 运行一下接入数据库安装Prisma增加prisma库 redis增加redis服务 搭建服务 使用nestjs来做 这里是nestjs的网站Nestjs 安装 nest npm i -g nestjs/cli创建一个项目 并在开发工具打开 nest new todonest new xx 是新…

搭建后端服务

  • 搭建服务
    • 拆分下用户服务
  • 增加公共库
    • 通用模块
  • 运行一下
  • 接入数据库
    • 安装Prisma
      • 增加prisma库
    • redis
      • 增加redis服务

搭建服务

使用nestjs来做 这里是nestjs的网站Nestjs

安装 nest

npm i -g @nestjs/cli

创建一个项目 并在开发工具打开

nest new todo

nest new xx 是新建一个项目
会让你选择包管理工具,我用的是pnpm

拆分下用户服务

在根目录下执行

nest g app user

这个时候 就拆分成了两个服务,方便分开维护,用户服务只负责用户的登录注册以及用户信息查询。

增加公共库

两个服务会有一些公共的依赖模块,比如数据库,装饰品,工具等等。这个时候需要抽离出来。

通用模块

主要存放一些 拦截器,装饰器,工具方法等,项目小,不再拆分模块,一般公用的都塞到一个里面。 当然也可以多拆分几个,装饰器丢到装饰器模块,拦截器都丢到拦截器模块。

nest g lib common

执行后一路回车。
此时目录结构为这样
在这里插入图片描述

运行一下

控制台执行

npm run start:dev todo

在这里插入图片描述
在apps/todo/src/main.ts可以看到port是3000,当然可以修改为你想要的。然后在浏览器中访问http://localhost:3000,显示了Hello World!。这里是调用了get请求,在apps/todo/src/app.controller.ts可以看到。
在这里插入图片描述

到这里一个简单的后端服务就搭建完成了。

接入数据库

接入数据库,用的mysql。mysql搭建教程有很多,这里不在阐述。

安装Prisma

这里的数据库管理工具使用Prisma。

npm install prisma --save-dev

初始化

npx prisma init

执行完成后 目录结构如下

在这里插入图片描述
点击.env 修改连接地址 如果是本地的mysql则为localhost否则修改为ip地址

DATABASE_URL="mysql://root:你的密码@localhost:3306/todo"

然后修改prisma/schema.prisma的数据库为mysql

datasource db {provider = "mysql"url      = env("DATABASE_URL")
}

如果你用的是vscode/cursor 可以安装下prisma的插件,有代码高亮会舒服很多,插件直接搜索prisma最多下载的就是。
在这里插入图片描述
我这里直接忽略了密码登录,如果需要 可以加个 password string

model User {id          String      @id @default(uuid())username    String  @uniqueemail       String?  @uniquewxId    String?  @uniquecreatedAt   DateTime @default(now())updatedAt   DateTime @updatedAt@@index([username], name: "username_idx")@@index([email], name: "email_idx")@@index([wxId], name: "wxId_idx")
}

重置下数据库

npx prisma migrate reset 

生成下数据表

npx prisma migrate dev --name user

npx prisma migrate dev --name user 是一个 Prisma CLI 命令,用于在开发环境中创建和应用新的数据库迁移。以下是这个命令的具体含义和作用:
含义和作用
创建新的迁移: 该命令会根据当前的 Prisma schema 文件生成一个新的迁移文件。迁移文件包含了将数据库结构从上一个状态更改到当前状态所需的 SQL 语句。
2. 应用迁移: 在生成迁移文件后,migrate dev 会立即将该迁移应用到数据库中。这意味着数据库结构会更新以匹配最新的 Prisma schema。
3. 命名迁移: --name user 参数为生成的迁移文件指定一个名称。在迁移文件夹中,迁移文件会以时间戳和指定名称命名,例如 20231010123456_user,以便于识别和管理。
适用于开发环境: 该命令主要用于开发环境,以便在开发过程中快速迭代数据库模型。

在这里插入图片描述
在这里插入图片描述

增加prisma库

nest g lib prisma

修改prisma.service.ts

import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {constructor() {super({log: [{emit: 'stdout',level: 'query'},{emit: 'stdout',level: 'error'}]})}async onModuleInit() {await this.$connect();}
}

当模块初始化完成时连接数据库,log是打印。

redis

npm install redis --save-dev

新建一个库模块

nest g lib redis

在 redis.module.ts中 增加redis连接代码

import { Global, Module } from '@nestjs/common';
import { createClient } from 'redis';
import { RedisService } from './redis.service';@Global()
@Module({providers: [RedisService,{provide: 'REDIS_CLIENT',async useFactory(configService: ConfigService) {const config =  {url: 'redis://localhost:6379',password: 'xxx',};const client = createClient(config);await client.connect();return client;},},],exports: [RedisService],
})
export class RedisModule {}

增加redis服务

在redis.service.ts中

import { Inject, Injectable } from '@nestjs/common';
import { RedisClientType } from 'redis';@Injectable()
export class RedisService {@Inject('REDIS_CLIENT')private redisClient: RedisClientType;async keys(pattern: string) {return await this.redisClient.keys(pattern);}async get(key: string) {return await this.redisClient.get(key);}async set(key: string, value: string | number, ttl?: number) {await this.redisClient.set(key, value);if (ttl) {await this.redisClient.expire(key, ttl);}}async del(key: string) {await this.redisClient.del(key);}
}

当前代码地址 code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发:熟知@BuilderParam装饰器

前言 本文代码案例基于Api13。 在实际的开发中,我们经常会遇到自定义组件的情况,比如通用的列表组件,选项卡组件等等,由于使用方的样式不一,子组件是动态变化的,针对这一情况,就不得不让使用方把…

MSI微星电脑冲锋坦克Pro Vector GP76 12UGS(MS-17K4)原厂Win11系统恢复镜像,含还原功能,预装OEM系统下载

适用机型:【MS-17K4】 链接:https://pan.baidu.com/s/1P8ZgXc6S_J9DI8RToRd0dQ?pwdqrf1 提取码:qrf1 微星笔记本原装出厂WINDOWS11系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、MSI Center控制中心等预装…

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…

Qt开发③Qt的信号和槽_概念+使用+自定义信号和槽+连接方式

目录 1. 信号和槽概述 1.1 事件和控件 1.2 信号的本质 1.3 槽的本质 2. 信号和槽的使用 2.1 connect 连接信号和槽 2.2 查看内置信号和槽 2.3 Qt Creator 生成信号槽代码 3. 自定义信号和槽 3.1 不带参数的信号和槽 3.2 带参数的信号和槽 4. 信号与槽的连接方式 4…

【动态路由】系统Web URL资源整合系列(后端技术实现)【apisix实现】

需求说明 软件功能需求:反向代理功能(描述:apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 业务应用等多个web资…

在Ubuntu24.04上安装Stable-Diffusion1.10.1版本

之前曾介绍过在Ubuntu22.04上安装Stable-Diffusion: 在Ubuntu22.04上部署Stable Diffusion_ubuntu stable dif-CSDN博客 这个安装我们使用conda python虚拟机。这次我们介绍的是在Ubuntu24.04安装Stable-Diffusion的最新版本V1.10.1(截止到今天最新版&…

IIS asp.net权限不足

检查应用程序池的权限 IIS 应用程序池默认使用一个低权限账户(如 IIS_IUSRS),这可能导致无法删除某些文件或目录。可以通过以下方式提升权限: 方法 1:修改应用程序池的标识 打开 IIS 管理器。 在左侧导航树中&#x…

MVTEC数据集笔记

前言 网上的博客只有从论文里摘出的介绍,没有数据集文件详细的样子,下载数据集之后,对数据集具体的构成做一个补充的笔记。 下载链接:https://ai-studio-online.bj.bcebos.com/v1/7d4a3cf558254bbaaf4778ea336cb14ed8bbb96a7f2a…

记一次渗透测试实战之Sightless

信息收集 端口扫描 使用nmap进行端口探测,发现存在21、22、80端口开放。 FTP未授权访问 尝试21端口未授权访问。 目录爆破 使用工具进行爆破目录。 未发现有用的路径,接着尝试访问80端口。 Web网站 访问主页 发现存在一个数据库调用页面 右上角有一…

前端监控的具体实现细节

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

PostgreSQL 的崛起与无服务器数据库的新时代

根据 2023 年 Stack Overflow 开发人员调查 ,PostgreSQL 超越 MySQL 成为最受开发人员推崇和期望的数据库系统,这是一个重要的里程碑。这一转变反映了开发人员社区对 PostgreSQL 强大的功能集、可靠性和可扩展性的日益认同。 这种不断变化的格局激发了数…

cesium基础设置

cesium官网下载&#xff1a;https://cesium.com/downloads/ 1.安装cesium 选择下载到本地使用&#xff0c;或者通过npm下载到项目中 2.代码书写 &#xff08;1&#xff09;创建容器 <div id"cesiumContainer" style"width: 100%; height: 100%"><…

C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)

​ 这里我们将在 VS 上实现 QT 编程&#xff0c;实现如下&#xff1a; 一、Vs 2022 配置&#xff08;若已安装&#xff0c;可直接跳过&#xff09; 点击链接&#xff1a;​​​​​Visual Studio 2022 我们先去 Vs 官网下载&#xff0c;如下&#xff1a; 等待程序安装完成之…

uniapp webview嵌入外部h5网页后的消息通知

最近开发了个oa系统&#xff0c;pc端的表单使用form-create开发&#xff0c;form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。移动端使用uniapp开发&#xff0c;但是因为form-create移动端只支持vant&#xff0c;不支持uniapp。官…

Python在网络安全中的应用 python与网络安全

前言 网络安全是保护网络、系统和程序免受数字攻击的做法。据估计&#xff0c; 2019 年该行业价值 1120 亿美元&#xff0c;到2021 年估计有 350 万个职位空缺。 许多编程语言用于执行与网络安全相关的日常任务&#xff0c;但其中一种已成为行业标准&#xff1a;Python&#…

设计模式15:中介者模式

系列总链接&#xff1a;《大话设计模式》学习记录_net 大话设计-CSDN博客 1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;旨在通过一个中介对象来封装一系列对象之间的交互方式&#xff0c;从而减少这些对象间的直接依赖。在该模式…

爬取网站内容转为markdown 和 html(通常模式)

我们遇到一些自己喜欢内容&#xff0c;想保存下来&#xff0c;手动复制粘贴很麻烦&#xff0c;我们使用 python 来爬取这些内容。 一、代码 downlod.py import os import requests from bs4 import BeautifulSoup from urllib.parse import urljoin# 目标网页&#xff08;可…

高效执行自动化用例:分布式执行工具pytest-xdist实战!

01、声明 在介绍pytest-xdist时&#xff0c;不讲任何原理&#xff0c;需要看原理的请移至官方&#xff1a;https://pypi.org/project/pytest-xdist/ 当我们自动化测试用例非常多的时候&#xff0c; 一条条按顺序执行会非常慢&#xff0c;pytest-xdist的出现就是为了让自动化测…

deepseek多列数据对比,联想到excel的高级筛选功能

目录 1 业务背景 ​2 deepseek提示词输入 ​3 联想分析 4 EXCEL高级搜索 1 业务背景 系统上线的时候经常会遇到一个问题&#xff0c;系统导入的数据和线下的EXCEL数据是否一致&#xff0c;如果不一致&#xff0c;如何快速找到差异值&#xff0c;原来脑海第一反应就是使用公…

个人博客测试报告

一、项目背景 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。前端主要有四个页面构成&#xff1a;登录页、列表页、详情页以及编辑页&#xff0c;以上模拟实现了最简单的个人博客系统。其结合后…