nestjs配置MySQL数据库,NestJS 连接数据库

前置条件

安装 mongodb 服务

文件下载地址:

https://www.mongodb.com/download-center?jmp=nav#community

方式一:

wget https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.2.tgz

tar -zxvf mongodb-osx-ssl-x86_64-4.0.2.tgz

mv mongodb-osx-ssl-x86_64-4.0.2 mongodb

mv mongodb /usr/local/mongodb

配置 zshrc 文件

vi ~/.zshrc

export PATH=/usr/local/mongodb/bin:$PATH

source ~/.zshrc

方式二:

brew update

brew install mongodb

mkdir -p /data/db

启动服务

mongod --config /usr/local/etc/mongod.conf

安装 mongo 依赖包

yarn add mongoose @nestjs/mongoose

yarn add @types/mongoose --dev

配置数据库连接

...

@Module({

imports: [

ShareModule,

AdminModule,

MongooseModule.forRoot('mongodb://localhost:27017/blog'),

],

...

})

export class AppModule {}

添加 schema

import * as mongoose from 'mongoose';

export const AdminSchema = new mongoose.Schema({

name: String,

});

添加 model

import { Document } from 'mongoose';

export interface AdminModel extends Document {

name: string;

}

添加数据操作服务

import { Injectable } from '@nestjs/common';

import { InjectModel } from '@nestjs/mongoose';

import { AdminModel } from '../models';

import { Model } from 'mongoose';

@Injectable()

export class AdminService {

constructor(

@InjectModel('admin') private readonly adminModel: Model,

) {}

async create(dto?: AdminModel): Promise {

const admin = new this.adminModel({

name: 'see',

});

return await admin.save();

}

async findAll(): Promise {

return await this.adminModel.find().exec();

}

}

配置 collection

import { Module } from '@nestjs/common';

import { controllers } from './controller';

import { MongooseModule } from '@nestjs/mongoose';

import { AdminSchema } from './schemas/admin.schema';

import { AdminService } from './services';

@Module({

imports: [

MongooseModule.forFeature([

{ name: 'admin', schema: AdminSchema, collection: 'admin' },

]),

],

controllers: [...controllers],

providers: [AdminService],

})

export class AdminModule {}

测试连接

import { Controller, Get, Post, Body, Render, Res } from '@nestjs/common';

import { routes } from '@config';

import { AdminService } from '../services';

const { prefix } = routes.admin;

@Controller(prefix)

export class AdminController {

constructor(private readonly service: AdminService) {}

@Get('getUserInfo')

@Render('admin/user_list')

async adminList() {

const data = await this.service.findAll();

console.log(data);

return {

data,

};

}

}

2018.9.30 深圳 天之骄子

好的,我可以为你提供一些关于如何使用NestJS连接数据库并创建3张表的指导。 首先,你需要安装 `TypeORM` 和 `@nestjs/typeorm` 这两个npm包,用于连接数据库和实现ORM。 接下来,在你的 `app.module.ts` 文件中,你需要导入 `TypeOrmModule` 并设置连接数据库配置。例如: ``` import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './users/user.entity'; import { Post } from './posts/post.entity'; import { Comment } from './comments/comment.entity'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'database_name', entities: [User, Post, Comment], synchronize: true, }), ], }) export class AppModule {} ``` 在上面的示例中,我们使用了 `mysql` 数据库,并设置了相关的连接信息。同时,我们还导入了 `User`、`Post` 和 `Comment` 这三个实体,这样 `TypeOrmModule` 就可以根据这些实体创建对应的表。 接下来,我们需要创建这三个实体所对应的类。例如,`User` 实体类的定义如下: ``` import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() email: string; @Column() password: string; } ``` 在上面的示例中,我们使用了 `@Entity` 装饰器来标识这是一个实体类,使用 `@Column` 装饰器标识每个属性对应的数据库列。同时,我们还使用了 `@PrimaryGeneratedColumn` 装饰器来标识 `id` 属性为主键。 最后,我们需要在需要使用这些实体的模块中导入它们,并使用 `TypeOrmModule.forFeature` 方法将它们注入到模块中。例如: ``` import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { UsersController } from './users.controller'; import { UsersService } from './users.service'; import { User } from './user.entity'; @Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [UsersController], providers: [UsersService], }) export class UsersModule {} ``` 在上面的示例中,我们导入了 `User` 实体,并使用 `TypeOrmModule.forFeature` 方法将它注入到模块中。这样,我们就可以在 `UsersService` 和 `UsersController` 中使用 `User` 实体了。 通过以上步骤,我们就可以使用 NestJS 连接数据库并创建3张表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值