使用"@meanie/mongoose-to-json"转换查询后返回的json数据

将"_id"转为"id",并删除"__v"字段

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
import * as toJSON from '@meanie/mongoose-to-json'; export type CatDocument = Cat & Document; @Schema()
export class Cat {
@Prop()
name: string; @Prop()
age: number; @Prop()
breed: string;
} export const CatSchema = SchemaFactory.createForClass(Cat).plugin(toJSON);

全局使用

    MongooseModule.forRoot('mongodb://localhost/test', {
connectionFactory: (connection) => {
connection.plugin(require('@meanie/mongoose-to-json'));
return connection;
},
}),

Prop

@Schema()
export class Cat {
@Prop({ required: true })
name: string; @Prop([Number])
ages: number[]; @Prop({ default: 'lll' })
breed?: string; @Prop({ type: Date, default: Date.now })
date?: Date;
}
this.catModel.insertMany([{ name: 'aaa', ages: [2, 1] }]);

这将返回:

[
{
"breed": "lll",
"ages": [
2,
1
],
"name": "aaa",
"date": "2021-01-07T02:44:06.459Z",
"id": "5ff67576b9280e2aa0728ee8"
}
]

如果你将date改为number类型,将返回时间戳(毫秒)

  @Prop({ type: Number, default: Date.now })
date?: number;

链表


@Schema()
export class Breed {
@Prop()
breed: string;
}
export const BreedSchema = SchemaFactory.createForClass(Breed); @Schema({versionKey: false})
export class Cat {
@Prop({ required: true })
name: string; @Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'Breed' })
breed: Breed;
}
export const CatSchema = SchemaFactory.createForClass(Cat);

增:

this.catModel.insertMany([
{
name: 'cat 1',
breed: mongoose.Types.ObjectId('5ff67afda6c7062a2a97575f'),
},
]);

查:

this.catModel.find().populate('breed');

如果一只猫含有多个品种

@Schema({ versionKey: false })
export class Cat {
@Prop({ required: true })
name: string; @Prop({ type: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Breed' }] })
breed: Breed;
} // data
{
"_id" : ObjectId("5ff69a49c96ca7d6c68d1b26"),
"name" : "cat 1",
"breed" : ["5ff69995c96ca7d6c68d1b1d", "5ff699b9c96ca7d6c68d1b22"]
}

保存新数据:

    const newBreed = new this.breedModel({
breed: 'bbbb',
}); newBreed.save();
return this.catModel.insertMany([
{
name: 'cat 1',
breed: newBreed._id,
},
]);

Nestjs mongodb的更多相关文章

  1. Nestjs 使用mongodb

    Docs: https://docs.nestjs.com/techniques/mongodb yarn add @nestjs/mongoose mongoose 链接 // sec/app.mo ...

  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. Jackson学习

    Jackson 是一个能够将java对象序列化为JSON字符串,也能够将JSON字符串反序列化为java对象的框架. 本文的所有内容都可以从 Java JSON Jackson Introductio ...

  2. Webpack4.0各个击破(8)tapable篇

    目录 一. tapable概述 二. tapable-0.2源码解析 2.1 代码结构 2.2 事件监听方法 2.3 事件触发方法 三. tapable1.0概述 一. tapable概述 tapab ...

  3. P6739 [BalticOI 2014 Day1] Three Friends 题解

    目录 写在前面 Solution 何为字符串哈希(可跳过): Code 写在前面 P6739 [BalticOI 2014 Day1] Three Friends 听说这题可以用比较暴力的做法过,比如 ...

  4. MySql数据表设计,索引优化,SQL优化,其他数据库

    MySql数据表设计,索引优化,SQL优化,其他数据库 1.数据表设计 1.1数据类型 1.2避免空值 1.3text类型优化 2.索引优化 2.1索引分类 2.2索引优化 3.SQL优化 3.1分批 ...

  5. SpringMVC传递JSON数据

    文章目录 一.前后端传递和接收JSON数据 1:是要Ajax默认格式来传递数据(*) 2:使用application/json格式来传递数据 二.spring-web.xml中需要如下配置 一.前后端 ...

  6. Java方式导出EXCEL表格

    最近几天做公司项目,应客户需求需要将表单的数据下载本地存成.xls文件.之前做毕设的时候,就有类似这方面的功能需 求,但是当时也没有做就搁浅了下来,这次补上. 一.业务开发描述 二.前台jsp页面及j ...

  7. 【从零开始撸一个App】RecyclerView的使用

    目标 前段时间打造了一款简单易用功能全面的图片上传组件,现在就来将上传的图片以图片集的形式展现到App上.出于用户体验考虑,加载新图片采用[无限]滚动模式,Android平台上我们优选Recycler ...

  8. Malaysia Trip Memory ('-ωก)

    独白 ​ 初次见面,睡意阑珊.日轮.稀疏.惨白色.墨绿色,\(\rho_{atm}>\rho_{space}\) 的作用被赤道所隐藏,一时的不知所从,斑斓成了单一.之后的故事,踏上一辆盛装打扮的 ...

  9. java中== equal hashcode 比较的区别

    == 基本数据类型是进行数值的比较 引用数据类型比较的是两对象的地址值 实际上都是进行直接值的比较 equal(Object) Object型参数,任何类型的实参都可以传入,只有实参是一个字符串且内容 ...

  10. Linux lsblk和df命令区别

    lsblk 查看的是block device,也就是逻辑磁盘大小. df查看的是file system, 也就是文件系统层的磁盘大小