一、安装 nestjs/mongoose 以及 mongoose 模块

  1. npm install --save @nestjs/mongoose mongoose
  2. npm install --save-dev @types/mongoose

二、配置数据库连接地址

  1. // app.module.ts
  2. import { MongooseModule } from '@nestjs/mongoose';
  3. @Module({
  4. MongooseModule.forRoot('mongodb://127.0.0.1:27017/koa',{ useNewUrlParser: true })
  5. })

三、配置 Schema

  1. // schemas/article.schema.ts
  2. import * as mongoose from 'mongoose';
  3. export const ArticleSchema = new mongoose.Schema({
  4. title: String,
  5. author: String,
  6. keywords: String,
  7. content: String,
  8. status: Number
  9. });

四、在控制器对应的 Module 中配置 Model

  1. // article.module.ts
  2. import { MongooseModule } from '@nestjs/mongoose';
  3. import { ArticleSchema } from '../../schemas/article.schema';
  4. @Module({
  5. imports: [MongooseModule.forFeature([
  6. {
  7. name: "Article",
  8. schema: ArticleSchema,
  9. collection: 'article', // 数据库的表名称
  10. }
  11. ])],
  12. })

五、在服务里面使用 InjectModel 获取数据库 Model 实现 操作数据库

  1. // article.service.ts
  2. import { Injectable } from '@nestjs/common';
  3. import { InjectModel } from '@nestjs/mongoose';
  4. @Injectable()
  5. export class ArticleService {
  6. // 使用 InjectModel 获取 admin.module.ts 中的 MongooseModule 的参数
  7. constructor(@InjectModel('Article') private readonly articleModel) { }
  8. // 在数据库里面查询全部文字
  9. async findAll() {
  10. const result = await this.articleModel.find().exec()
  11. return result;
  12. }
  13. }
  14. // article.controller.ts
  15. import { ArticleService } from './../../service/article/article.service'; // 引入服务
  16. import { Controller, Get } from '@nestjs/common';
  17. @Controller('admin/article')
  18. export class ArticleController {
  19. constructor(private articleService: ArticleService) { } // 依赖注入
  20. @Get()
  21. async index() {
  22. var result = await this.articleService.findAll();
  23. return result;
  24. }
  25. }

六、多个数据库

  1. // app.module.ts
  2. import { Module } from '@nestjs/common';
  3. import { MongooseModule } from '@nestjs/mongoose';
  4. @Module({
  5. imports: [
  6. MongooseModule.forRoot('mongodb://localhost/test', {
  7. connectionName: 'cats',
  8. }),
  9. MongooseModule.forRoot('mongodb://localhost/users', {
  10. connectionName: 'users',
  11. }),
  12. ],
  13. })
  14. export class AppModule { }