首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Mongoose学习参考文档

1.2 准备工作 1.首先你必须安装MongoDB和NodeJS 2.项目只能够创建一个数据库连接,如下: var mongoose = require('mongoose'); //引用...当然,你也可以自定义Schema.Type,只有满足Schema.Type的类型才能定义Schema。...6.1 查询的方式   通常有2种查询方式,一种是直接查询,一种是链式查询(2种查询都是自己命名的) 6.1.1 直接查询   查询时带有回调函数的,称之为直接查询查询的条件往往通过API来设定,例如...,请查询API 6.1.2 链式查询   查询时候,不带回调,而查询条件通过API函数来制定,例如: var query = PersonModel.findOne({'name.last':...,分的比较明细,如果不带callback,则返回query,query没有执行的预编译查询语句,该query对象执行的方法都将返回自己,只有执行exec方法时才执行查询,而且必须有回调。

24.2K90

Nodejs学习笔记(十四)— Mongoose介绍和入门

简介   Mongoosenode.js异步环境下对mongodb进行便捷操作的对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考...或关系取反   $gt    大于   $gte    大于等于   $lt     小于   $lte     小于等于   $ne            不等于   $in             多个值范围...  $nin           不在多个值范围   $all            匹配数组中多个值   $regex  正则,用于模糊查询   $size   匹配数组大小   $maxDistance...  范围查询,距离(基于LBS)   $mod     取模运算   $near   邻域查询查询附近的位置(基于LBS)   $exists    字段是否存在   $elemMatch  匹配数组的元素...mongoose操作基本入门大致就是这些,自已试一下,入门完全没问题,并且比node-mongodb-native还是要简单明了一些,   node.js中操作数据库,如果逻辑相对复杂时,大量的回调嵌套还是比较郁闷的

2.6K60

Mongoose 实现关联查询和踩坑记录

本文源自工作中的一个问题,使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,经过一番查阅、测试之后...内嵌是把相关联的数据保存在同一个文档,我们可以用对象或数组的形式来存储,这样好处是我们可以一个单一操作完成,可以发送较少的请求到数据库服务端,但是这种内嵌类型也是一种冗余的数据模型,会造成数据的重复...引用模型是一种规范化的数据模型,通过主外键的方式来关联多个文档之间的引用关系,减少了数据的冗余,使用这种数据模型中就要用到关联查询,也就是本文我们要讲解的重点。...= { AuthorModel, BookModel, } 使用 Aggregate 的 $lookup 实现关联查询 MongoDB 3.2 版本新增加了 lookup 实现多表关联,聚合管道阶段中使用...Virtual 和 populate 实现 Mongoose 的 populate 方法默认情况下是指向的要关联的集合的 _id 字段,并且 populate 方法里无法更改的,但是 Mongoose

26.4K20

nestjs+vue+ts打造一个酷炫的星空聊天室(含完整数据库设计)

作者:edisonC 原文地址:https://juejin.im/post/6854573222415826957 简介 闲暇时间想做一个聊天室复盘一下这些年学习到的技术,于是2020年6月24号就开始了...nestjs 的依赖注入以及模块化的思想,使得代码结构清晰,便于维护。 nestjs 的 @nestjs/websockets 包封装好了对于 WebSocket 事件的处理,对于开发聊天室有优势。...连接钩子 async handleConnection(client: Socket): Promise { let userRoom = client.handshake.query.userId...FriendMessage[]; createTime: number; } 我曾经用对象数组 [ friend1 , friend2 ... ] 这样的结构去管理所有的 群/好友 数据,但是当数据量很大的时候,查询和更新...使用了 vuex-class ,那么 vue 组件中调用 vuex 的方法只需要这么写: // GenalChat.vue import { namespace } from 'vuex-class'

2.7K20

Mongoose 插件记录Node.js API日志

这些模块可以将日志存储不同格式或级别的文件中。我们将使用流行的ORM Mongoose 讨论 Node.js Express 程序中的 API 日志记录。...那么如何创建一个 Mongoose 插件,以更清洁的方式为你进行记录并简化 API 日志? Mongoose 中的插件是什么? Mongoose 中,模式是可插入的。...插件就像一个函数,你可以模式中使用它,并在模式实例上一次次地重用。 Mongoose 还提供全局插件,你可以将其用于所有模式。..._diff, } return LogSchema.create(data) } } module.exports = plugin Mongoose 中,有不同的钩子可用。...你还可以通过架构模型中初始化它来将其用于特定架构。 const mongoose = require('mongoose') mongoose.plugin(require('.

2.7K40

记一个异步循环遍历的问题

以下所有操作都是使用的 mongoose ,另外 schema 和 model 定义这些无关紧要的部分统统省略了,无需深究代码的细节处。...需求 ---- 跨表循环遍历查询:从第一个表中查询所有匹配的数据,结果为 doc ,数组形式。...从 doc 数组中遍历每一个元素的 phone 属性,去另外一张表中查询 phone 匹配的数据,合并对象,然后返回结果。...OK,又是一个想当然,程序最终会一直 while 里死循环。 为什么这样不行?...我们都知道 node 是基于异步的事件循环机制,但是当我们这里使用 while 循环判断时,这个 while 本质上是一个同步的代码,其是无法与事件循环机制的钩子对接,所以无法跳出这个同步的 while

1.1K20

Node.js服务端开发教程 (六):依赖注入补漏篇

通常情况下,我们设计的时候应该尽量避免循环依赖,但是总有避免不了的情况,NestJS中提供了一种称为前向引用(forward referencing)的技术来解析循环依赖项。...constructor(private readonly moduleRef: ModuleRef) { } onModuleInit() { //使用 moduleRef 从当前模块中查询...因此,绝大多数情况下,我们的NestJS程序资源创建这块,都推荐使用默认的单例方式。 这种方式,其实也代表了资源的生存范围(Scope)。比如单例的话,是应用启动后就被初始化,一直到应用关闭。...NestJS提供了3种范围: 单例(SINGLETON)- 应用一启动就被实例化,只有一个对象实例,整个应用程序范围被共享 请求(REQUEST)- 针对于每个请求生成一个实例,请求处理结束后销毁...在后面的一两篇文章,我将计划再介绍一些关于NestJS框架的其他核心基础,我一直相信,基础打好了,才会让你往后的做事效率达到事半功倍的效果。

1.4K20

前端文档站点搭建方案

前言 《自动化 Web 性能优化分析方案》一文中说到,百策系统性能检测的原理,以及对于检测页面我们最终会生成一份检测报告,如下图所示: ?...文档站点自动更新 方法一:EggJS + marked + highlight.js 将文档以 Markdown 的形式放在 GitLab 中,以便文档的维护 熟悉 Git 的小伙伴知道 GitLab 是可以设置钩子...(Hook) 的,通过设置钩子可以实现当我们提交代码后,服务端知道在哪个分支修改了哪些文件,然后把更新后的文档重新转化成 Html 文件 设置 GitLab Webhook 时,只需选择 push...image-20191125211921359 方法二:NestJS + docsify 本着折腾的精神,上述方法是我们组的小伙伴自己实现了 docsify 类似的方案,细节方面的设计着实比不上开源的那些产品...实时把最新的 md 文件转化为 Html 服务端核心代码 // app.controller.ts import { Controller, Post } from "@nestjs/common";

1.6K10

mogoose 创建数据库并增删改查

下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); const db =...会自己添加一个该字段,该字段不会重复,类型为ObjectId,通过findById()查询 const userSachem = new mongoose.Schema( { name...添加`createdAt updatedAt`创建时间和更新时间两个字段 } ); 如果在定义了结构后需要添加新字段,实例上使用add()方法 创建表model 通过mongoose.model...("User", userSechem); ---- 通过上面的操作就获得了表的构造函数,接下来就可以向里面进行增删改查了 增 有三种方法增加数据: 通过实例化数据: 创建表数据实例化model...Model.prototype.save就会把数据存入数据库中 注意:该方法为异步方法 await user.save(); 通过Model.create方法: 通过表构造器的静态方法create自动表中插入新的数据

5.1K30

使用NestJs、GraphQL、TypeORM搭建后端服务

此前有提到,NestJs里面万物皆是Module,所以这里的TypeORM也是作为一个子Module添加到整个服务中。所以它的位置应该在imports这里。...我们先把需要的依赖安装下: $ npm i @nestjs/graphql --save 因为Graphql需要依赖具体的事务,所以我们src/modules/pokemon目录下创建三个文件,分别是...Field:声明一个属性,这个属性属于ObjectType进行API查询的时候将会用于解释一个字段,它对类的一个属性进行装饰,使用方式:@Field。...这两个方法即是我们之前提到的创建以及查询一个列表代码如下: import { Injectable } from '@nestjs/common' import { InjectRepository }...结语 其实总体来说,整个NestJs应用的开发体验还是蛮好的,相关的生态也发展的比较成熟,本项目仅是对相关技术的一个整体尝试,实际开发过程中遇到的还有很多别的问题,比如GraphQL的N+1查询问题,

6.5K10
领券