当前位置: 首页 > news >正文

nest中的ORM

在 Nest.js 中执行 SQL 查询通常涉及使用 TypeORM 或 Sequelize 这样的 ORM(对象-关系映射)库。这些库使得在 Nest.js 应用程序中连接和操作 SQL 数据库变得更加简单和直观。

以下是一个使用 TypeORM 在 Nest.js 中执行 SQL 查询的示例代码:

首先,确保你已经在项目中安装了 TypeORM:

在user模块中的entites中;user.entity.ts中有如下代码:

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity()
export class User {@PrimaryGeneratedColumn()id: number@Column()username: string@Column()password: string
}

在user模块中的service中;user.service.ts中有如下代码:

import { Injectable } from '@nestjs/common';
import { UserDto } from './dto/create-user.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
@Injectable()
export class UserService {constructor(@InjectRepository(User) private readonly user: Repository<User>) { }async login(userDto: UserDto) {const userInfo = await this.user.findOne({where: {username: userDto.username,password: userDto.password,},})return userInfo;}async register(userDto: UserDto) {const existingUser = await this.user.findOne({where: {username: userDto.username,},});if (existingUser) {return '用户名已存在';}const data = new User();data.username = userDto.username;data.password = userDto.password;return this.user.save(data);}
}

很明显没有使用sql语句,但是也完成了sql操作;

在另一个项目中使用的是

user模块中的user.model.ts中代码如下:

import { Column, Model, Table } from 'sequelize-typescript';@Table
export class User extends Model<User> {@Columnusername: string;@Columnpassword: string;@Columnavatar: string;
}

在user.service.ts中代码如下:

import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { InjectModel } from '@nestjs/sequelize';
import { User } from './model/user.model';
@Injectable()
export class UserService {constructor(@InjectModel(User) private userModel: typeof User,) {}async create(createUserDto: CreateUserDto) {let res = await this.userModel.build({...createUserDto})await res.save()return res}async findAll() {let res = await this.userModel.findAll()return res}async find(createUserDto: CreateUserDto) {let res = await this.userModel.findOne({where: {...createUserDto}})return res}async findOne(username: string) {let res = await this.userModel.findOne({where: {username}})return res !== null ? res : null}async uploadAvatar(username: string, avatar: string) {let res = await this.userModel.update({avatar}, {where: {username: username}})return {code: '200',msg: "上传成功",data: res}}async hasAvatar(username: string) {let res = await this.userModel.findOne({where: {username: username}})return res.avatar !== null}
}

http://www.lryc.cn/news/343251.html

相关文章:

  • TCP(Transmission Control Protocol,传输控制协议)如何保证数据的完整性?
  • Numpy库介绍
  • 临时有事无法及时签字盖章?试试用契约锁设置“代理人”
  • 数据库权限管理
  • 如何创建一个 Django 应用并连接到数据库
  • 【算法刷题day44】Leetcode:518. 零钱兑换 II、377. 组合总和 Ⅳ
  • 『51单片机』AT24C02[IIC总线]
  • Jenkins与Rancher的配合使用
  • GIS入门,常用的多边形平滑曲线算法介绍和JavaScript的多边形平滑曲线算法库chaikin-smooth的实现原理和使用
  • 气膜体育馆内部的采光效果如何?—轻空间
  • 矩阵的对称正定性判决(复习)
  • 网络安全之DHCP详解
  • 【Proteus】LED呼吸灯 直流电机调速
  • 今天遇到一个GPT解决不了的问题
  • 优化SQL的方法
  • 库存管理系统开源啦
  • 【java】接口
  • Java中的类型转换
  • 定义范围对PFMEA分析的重要性——SunFMEA软件
  • json返回工具类|世界协调时间(UTC)
  • MySQL·内置函数
  • vue根据文字动态判断溢出...鼠标悬停显示el-tooltip展示
  • 使用Tkinter实现数据预测工具的GUI界面展示
  • 机器学习笔记-22
  • 车间为什么选择蒸发式冷风机?
  • 5分钟速通大语言模型(LLM)的发展与基础知识
  • vue项目开发流程
  • 【Django学习笔记(十)】Django的创建与运行
  • 即时通讯技术文集(第37期):IM代码入门实践(Part1) [共16篇]
  • UV胶具有哪些特点和优势