Docs: https://docs.nestjs.com/techniques/mongodb

yarn add @nestjs/mongoose mongoose

链接

  1. // sec/app.module.ts
  2. import { Module }from '@nestjs/common';
  3. import { AppController } from './app.controller';
  4. import { AppService } from './app.service';
  5. import { MongooseModule } from '@nestjs/mongoose'
  6. import { CatsModule } from './cats/cats.module';
  7. @Module({
  8. imports: [
  9. MongooseModule.forRoot('mongodb://localhost/ajanuw' { useNewUrlParser: true }), // ajanuw数据库的名字
  10. CatsModule
  11. ],
  12. controllers: [AppController],
  13. providers: [AppService],
  14. })
  15. export class AppModule {}

模型注入

  1. // src/cats/schemas/cat.schema.ts
  2. import * as mongoose from 'mongoose';
  3. export const CatSchema = new mongoose.Schema({
  4. name: String,
  5. });

cats.module.ts 中使用

  1. import { Module } from '@nestjs/common';
  2. import { CatsController } from './cats.controller';
  3. import { CatsService } from './cats.service';
  4. import { MongooseModule } from '@nestjs/mongoose'
  5. import { CatSchema } from './schemas/cat.schema'
  6. @Module({
  7. imports: [
  8. MongooseModule.forFeature([ // Schema 定义数据库的结构
  9. { name: 'Cat', schema: CatSchema } // name: 'Cat' cats 表, Cat 必须和service时@InjectModel('Cat')的一样
  10. ])
  11. ],
  12. controllers: [CatsController],
  13. providers: [CatsService]
  14. })
  15. export class CatsModule {}

cats.service.ts 中注入 CatModel

  1. import { Injectable } from '@nestjs/common';
  2. import { Model } from 'mongoose'
  3. import { InjectModel } from '@nestjs/mongoose'
  4. import { Cat } from './interfaces/cat.interface'
  5. import { CreateCat } from './class/create-cat.class'
  6. const l = console.log
  7. @Injectable()
  8. export class CatsService {
  9. constructor(
  10. @InjectModel('Cat') private readonly catModel: Model<Cat> // Model 可以操作数据表
  11. ){}
  12. async create(cat: CreateCat): Promise<Cat> {
  13. const createdCat = new this.catModel(cat)
  14. l(createdCat) // { _id: 5b8e2faba163251c9c769e6e, name: '小黑猫' } 返回一个docment
  15. return await createdCat.save() // 保存 document
  16. // return this.catModel.insertMany(cat)
  17. }
  18. async findAll(): Promise<Cat[]> {
  19. return await this.catModel.find().exec()
  20. }
  21. }

cats.controller.ts

  1. import { Controller, Get, Post, Body } from '@nestjs/common';
  2. import { CatsService } from './cats.service'
  3. import { CreateCat } from './class/create-cat.class'
  4. const l = console.log;
  5. @Controller('cats')
  6. export class CatsController {
  7. constructor(
  8. private readonly catsServer: CatsService
  9. ){}
  10. @Post()
  11. create(@Body() cat: CreateCat){
  12. this.catsServer.create(cat);
  13. }
  14. @Get()
  15. findAll(){
  16. return this.catsServer.findAll()
  17. }
  18. }

CreateCat

  1. export class CreateCat {
  2. readonly name: string;
  3. }

Cat

  1. import { Document } from 'mongoose'
  2. export interface Cat extends Document {
  3. readonly name: string;
  4. }

完整的 cats.controller.ts

  1. import { Controller, Get, Post, Body, Query, Delete } from '@nestjs/common';
  2. import { CatsService } from './cats.service'
  3. import { CreateCat } from './class/create-cat.class'
  4. const l = console.log;
  5. @Controller('cats')
  6. export class CatsController {
  7. constructor(
  8. private readonly catsServer: CatsService
  9. ){}
  10. @Post()
  11. create(@Body() cat: CreateCat){
  12. this.catsServer.create(cat);
  13. }
  14. @Get()
  15. findAll(){
  16. return this.catsServer.findAll()
  17. }
  18. @Get('find-cat')
  19. findCat(@Query('catName') catName){
  20. return this.catsServer.findCat(catName)
  21. }
  22. @Post('update-cat-name')
  23. updateCatName(@Body() body){
  24. this.catsServer.updateCatName(body)
  25. }
  26. @Delete('remove-cat')
  27. removeCat(@Body('catName') catName){
  28. this.catsServer.removeCat(catName)
  29. }
  30. }

cats.service.ts

  1. import {
  2. Injectable,
  3. HttpException,
  4. HttpStatus
  5. } from '@nestjs/common';
  6. import {
  7. Model
  8. } from 'mongoose'
  9. import {
  10. InjectModel
  11. } from '@nestjs/mongoose'
  12. import {
  13. Cat
  14. } from './interfaces/cat.interface'
  15. import {
  16. CreateCat
  17. } from './class/create-cat.class'
  18. const l = console.log;
  19. @Injectable()
  20. export class CatsService {
  21. constructor(
  22. @InjectModel('Cat') private readonly catModel: Model < Cat >
  23. ) {}
  24. async create(cat: CreateCat): Promise < Cat > {
  25. // const createdCat = new this.catModel(cat)
  26. // return await createdCat.save()
  27. return this.catModel.insertMany(cat)
  28. }
  29. async findAll(): Promise < Cat[] > {
  30. return await this.catModel.find().exec()
  31. }
  32. async findCat(name: string): Promise < Cat[] > {
  33. if (!name) {
  34. throw new HttpException('请求参数不正确.', HttpStatus.FORBIDDEN)
  35. }
  36. let resCat = this.catModel.find({
  37. name
  38. })
  39. return resCat
  40. }
  41. async updateCatName({name, newName}) {
  42. if(!name || !newName){
  43. throw new HttpException('请求参数不正确.', HttpStatus.FORBIDDEN)
  44. }
  45. const where = {
  46. name: name
  47. };
  48. const update = {
  49. $set: {
  50. name: newName
  51. }
  52. };
  53. return await this.catModel.updateOne(where, update);
  54. }
  55. async removeCat(catName){
  56. l(catName)
  57. if(!catName){
  58. throw new HttpException('请求参数不正确.', HttpStatus.FORBIDDEN)
  59. }
  60. return await this.catModel.deleteOne({name: catName})
  61. }
  62. }

Nestjs 使用mongodb的更多相关文章

  1. Nestjs mongodb

    nestjs 文档 mongoose 文档 使用"@meanie/mongoose-to-json"转换查询后返回的json数据 将"_id"转为"i ...

  2. Nestjs 缓存

    Docs: https://docs.nestjs.com/techniques/caching yarn add @nestjs/mongoose mongoose yarn add cache-m ...

  3. 在 Nest.js 中使用 MongoDB 与 TypeORM

    在 Nest.js 中使用 MongoDB 与 TypeORM 首先要在 database 文件夹里建立DatabaseModule模块文件, // database/database.module. ...

  4. Nestjs入门学习教程

    初次接触Nest,有问题欢迎指出: 简介 NestJS是一个用于构建高效.可扩展的Node.js服务器端应用程序的开发框架.简单来说是一款Node.js的后端框架. 它利用JavaScript的渐进增 ...

  5. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  6. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  7. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  8. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  9. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

随机推荐

  1. shell之磁盘容量检查,配合crontab可以定时清理磁盘

    我的做法: !/bin/bashAvailable=`df -k | sed -n 2p | awk '{print $4}'`if [ $Available -eq 0 ];then        ...

  2. 大数据学习环境搭建(CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1)

    node1 192.168.1.11 node2 192.168.1.12 node3 192.168.1.13 备注 NameNode Hadoop Y Y 高可用 DateNode Y Y Y R ...

  3. JSONArray数据转换成java List

    1.后台接收json数组转成封装实体类的List: package no.integrasco.ingentia.news.qaedition; public class Person { priva ...

  4. Log4j/Log4j2自定义Appender来实现日志级别计数统计及监控

    一.简述 本文主要讲如何基于Log4j2来实现自定义的Appender.一般用途是用于Log4j2自带的Appender不足以满足我们的需求,或者需要我们对日志进行拦截统计等操作时,需要我们自定义Ap ...

  5. IntelliJ IDEA web项目 工程构建运行部署

  6. Swoole PHP windows composer

    直接下载了 Swoole PHP 的 Windows 版安装包来用,遇到需要 Composer. 先是下载了 composer.phar.在这里下的 https://getcomposer.org/d ...

  7. (原)visual studio 2015中添加dll路径

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9922033.html 使用vs2015调用opencv 3.4时,除了需要在“VC++目录”中”包含 ...

  8. MATLAB 条形图添加多个图例

    MATLAB 条形图添加多个图例: 1)只有一个图例: 2)两个图例:

  9. MATLAB 按条件进行加和

    用 find 命令仅仅是找到元素的序号. 这里使用sum 直接选取数组中的元素然后进行加和: a=[ ; ; ; ]; b=sum(a(a>=));

  10. linux ls命令教程,ls命令怎么用,全部招数都教你

    linux ls命令的用法大全 学习linux这么久了,最常用的命令莫属 ls命令了,今天就总结下ls命令的用法与经验技巧.   ls命令按文件大小查看文件   a.降序:ls -lsh moudae ...