NestJS 连接数据库

前置条件

  1. 安装 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<AdminModel>,
  ) {}

  async create(dto?: AdminModel): Promise<AdminModel> {
    const admin = new this.adminModel({
      name: 'see',
    });
    return await admin.save();
  }

  async findAll(): Promise<AdminModel[]> {
    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 深圳 天之骄子

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,236评论 2 89
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,227评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    EndEvent阅读 1,216评论 1 4
  • 聚焦在 Twitter 上关于Apache Spark的数据,目标是准备将来用于机器学习和流式处理应用的数据。 ...
    abel_cao阅读 2,772评论 1 12

友情链接更多精彩内容