使用"@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. Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系 动态库内存管理 动态链接库搜索顺序 符号解析和绑定 strlen函数的汇编实现分析

    Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...

  2. JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务

    JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...

  3. 某cms最新版前台RCE漏洞(无需任何权限)2020-03-15

    漏洞文件:application/common/controller/Base.php 中的 getAddonTemplate 方法: 错误的使用了public,导致我们可以直接外部访问. 然后使用了 ...

  4. Linux下部署tp5项目如何隐藏URL中index.php

    找到nginx配置文件,加入以下代码: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; ...

  5. JS 实现一个实时动态校验,将输入格式错误的显示为红色背景

    功能描述: 源码: 功能描述: 实时动态校验,如果输入的格式错误,将弹窗提示输入格式错误并将背景展示为红色. 源码: 前台: <hy:formfield name="cxfdl&quo ...

  6. npm qs 模块(中文)

    本文基本使用谷歌翻译加上自己的理解,权当加深记忆. npm 简介 qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库.主要维护者:Jordan Harband最初创建者和维护者:TJ Ho ...

  7. 痞子衡嵌入式:恩智浦MCUX SDK在GitHub上线了

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦MCUX SDK 在GitHub上线一事. 其实在差不多一个月前(2021年1月6日),恩智浦MCUX SDK就在GitHub悄悄上 ...

  8. cartographer环境建立以及建图测试(详细级)

  9. httprunner(6)配置信息config

    前言 每个测试用例都应该有config部分,可以配置用例级别.比如name.base_url.variables.verify.export等等 案例演示 from httprunner import ...

  10. hdu5317 RGCDQ

    Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more an ...