返回
NestJs框架开发实战:构建股票估值查询系统(二)
前端
2024-01-24 10:07:00
引入TypeOrm
首先,我们需要在项目中引入TypeOrm模块。在您的终端中,运行以下命令:
npm install @nestjs/typeorm typeorm
配置TypeOrm
在您的NestJs应用程序中,您需要创建一个TypeOrm模块来配置数据库连接。在您的app.module.ts文件中,添加以下代码:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'stock_valuation',
entities: [],
synchronize: true,
}),
],
})
export class AppModule {}
在上面的代码中,我们配置了TypeOrm连接到MySQL数据库。您需要根据您的实际情况修改数据库连接信息,例如主机名、端口号、用户名、密码和数据库名称。
定义实体类
实体类是TypeOrm用来映射数据库表的类。在您的项目中,您需要定义一个实体类来映射股票估值表。在您的src/entities目录下,创建一个名为StockValuation.ts的文件,并添加以下代码:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class StockValuation {
@PrimaryGeneratedColumn()
id: number;
@Column()
stock_symbol: string;
@Column()
stock_name: string;
@Column()
current_price: number;
@Column()
earnings_per_share: number;
@Column()
price_to_earnings_ratio: number;
@Column()
dividend_yield: number;
@Column()
market_capitalization: number;
@Column()
debt_to_equity_ratio: number;
@Column()
return_on_equity: number;
@Column()
return_on_assets: number;
@Column()
gross_profit_margin: number;
@Column()
operating_profit_margin: number;
@Column()
net_profit_margin: number;
}
在上面的代码中,我们定义了一个实体类StockValuation,它映射了股票估值表的结构。每个字段对应表中的一列。
使用TypeOrm进行CRUD操作
现在,我们可以使用TypeOrm进行CRUD操作了。在您的src/services目录下,创建一个名为StockValuationService.ts的文件,并添加以下代码:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { StockValuation } from '../entities/StockValuation';
@Injectable()
export class StockValuationService {
constructor(
@InjectRepository(StockValuation)
private stockValuationRepository: Repository<StockValuation>,
) {}
async findAll(): Promise<StockValuation[]> {
return await this.stockValuationRepository.find();
}
async findOne(id: number): Promise<StockValuation> {
return await this.stockValuationRepository.findOne(id);
}
async create(stockValuation: StockValuation): Promise<StockValuation> {
return await this.stockValuationRepository.save(stockValuation);
}
async update(id: number, stockValuation: StockValuation): Promise<StockValuation> {
const existingStockValuation = await this.stockValuationRepository.findOne(id);
existingStockValuation.stock_symbol = stockValuation.stock_symbol;
existingStockValuation.stock_name = stockValuation.stock_name;
existingStockValuation.current_price = stockValuation.current_price;
existingStockValuation.earnings_per_share = stockValuation.earnings_per_share;
existingStockValuation.price_to_earnings_ratio = stockValuation.price_to_earnings_ratio;
existingStockValuation.dividend_yield = stockValuation.dividend_yield;
existingStockValuation.market_capitalization = stockValuation.market_capitalization;
existingStockValuation.debt_to_equity_ratio = stockValuation.debt_to_equity_ratio;
existingStockValuation.return_on_equity = stockValuation.return_on_equity;
existingStockValuation.return_on_assets = stockValuation.return_on_assets;
existingStockValuation.gross_profit_margin = stockValuation.gross_profit_margin;
existingStockValuation.operating_profit_margin = stockValuation.operating_profit_margin;
existingStockValuation.net_profit_margin = stockValuation.net_profit_margin;
return await this.stockValuationRepository.save(existingStockValuation);
}
async delete(id: number): Promise<void> {
await this.stockValuationRepository.delete(id);
}
}
在上面的代码中,我们定义了一个服务类StockValuationService,它提供了CRUD操作的方法。您可以使用这些方法来查询、添加、更新和删除股票估值数据。
结语
在本文中,我们介绍了如何使用TypeOrm和MySQL数据库构建股票估值查询系统。我们详细讲解了如何配置TypeOrm、定义实体类和使用TypeOrm进行CRUD操作。通过这些步骤,您可以轻松构建功能丰富的股票估值查询系统。