这两天跟着B站的Johnny老师学习NodeJs+Express+MongoDB相关的知识点,前后跟着做了1小时搞定NodeJs(Express)的用户注册、登录和授权、Element UI + NodeJs...我使用的系统是Windows10系统,采用的开发工具是Visual Studio Code,另外还需要在VSCode中安装REST Client插件,用于发送HTTP请求和查看服务端的响应信息,类似于PostMan...}) 在NodeJs中对MongoDB数据库进行增删改查 连接MongoDB数据库 新建一个MongoDB数据库模型,命名为express-test const mongoose = require('...true, }) }) 使用Rest-Client编写http请求 VScode中的Rest-Client有一个规定,就是http请求文件必须以http为后缀,比如说tets.http文件。...}) 我在实际使用VSCode的过程中,当使用async集合await调用MongoDB实现异步调用时保存,需要在源代码文件server.js的顶部添加如下一行: /* jshint esversion
mongodb 文档型数据库,nodejs的好基友。...日志文件的路径 mongod--logpath $logpath 以追加的方式打开文件 mongod—logappend 将数据库服务放在后台运行) 脚本启动或配置文件启动 mongod—fork...await col.find({$text:{$search:'芒果'}}) // 按词搜索,单独字查询不出结果 // 数组$all,$elemMatch,$size col.insertOne({...也需要一个odm工具来方便更好的操作。而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。...return this.model('blog').find({ author: this.author }).exec(); } // 获得模型实例 const BlogModel = mongoose.model
前言 首先做一下声明,本篇博客来源于BiliBili上全栈之巅主播Johnny的视频[1小时搞定NodeJs(Express)的用户注册、登录和授权(https://www.bilibili.com/video...看到B站上全栈之巅-Node.js+Vue.js全栈开发深度爱好者和实践者,感觉Johnny博主的系列视频讲解得不错,其中看到一个视频是1小时搞定NodeJs(Express)的用户注册、登录和授权,介绍了在...Express中怎么做用户登录和注册,以及jsonwebtoken的验证,需要在系统中安装MongoDB数据库;于是在自己的Windows10系统下使用VSCode跟着做,前提是要安装好NodeJs和Express...g nodemon cnpm install jsonwebtoken cnpm install bcryptjs cnpm install mongoose 另外,还需要在VSCode中安装扩展的rest-client...参考资料 1小时搞定NodeJs(Express)的用户注册、登录和授权 全栈之巅-Node.js+Vue.js全栈开发深度爱好者和实践者 Express 4.x API Express中文官网 NodeJs
这个时候产品狗要求我们开发一个文章的喜欢功能:类似“简书”。 只需要在文章中看到喜欢的用户即可,所以是一个单向的关联关系。...] } 表述的意思就是“张三、李四喜欢了《学习NodeJS》”。...项目中的Mongodb设计 NodeJS的流行,离不开丰富的中间件支持,对于操作Mongoose的中间件,我推荐“mongoosejs”, 官网称之为:“Mongoose ODM”。...而Mongoose的解决方法是在数据库的定义时就可以将这些信息定义好。这可能也就是约定优于配置(convention over configuration)的好处吧!...关于NodeJS中数据库的知识,就写这么多了,想要更多的了解有关Mongoose的用法,请参考官方文档:Mongoosejs Guide。文档写得非常详细! Have a good luck~
只需要在启动的时候加上参数--prof。...从completeMany这里破案了,这是mongoose中的一个方法,作用是将查询到的结果进行包装,使结果中的每一个文档成为mongoose文档,使之可以继续使用mongoose提供的方法。...是否等于true如果不等于true才会去调用completeMany方法去包装查询结果。...优化 回到问题上来,看到mongoose Document的问题,7月2号到7月3号后,为什么会突然导致CPU暴涨恍然大悟,自己之前review代码,看着代码没问题,但是忽略了这一个版本因为业务调整导致查询压力大大增加...await model.Package.find(query).lean(); 那说到频繁的处理mongoose Document导致的性能问题,那其实还有一个优化点可以做,其实在查询的时候多多使用find
创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败则插入失败。...24, //最小数值 max: 80 //最大数值 }, publishDate: { type: Date, // 默认值,没有插入信息时默认显示的值...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。...Post.find().populate('author').then(result => { console.log(result); }) // 返回结果如下 [ { _id:
验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败则插入失败。...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。...使用id对集合进行关联 使用populate方法进行关联集合查询 // 关联集合 const mongoose = require('mongoose'); // 连接数据库 mongoose.connect...案例:用户信息增删改查 搭建网站服务器,实现客户端与服务器端的通信 连接数据库,创建用户集合,向集合中插入文档 当用户访问/list时, 将所有用户信息查询出来 将用户信息和表格HTML...进行拼接并将拼接结果响应回客户端 当用户访问/add时, 呈现表单页面,并实现添加用户信息功能 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能 当用户访问/delete
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。...同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。...(silence.name); // 'Slience' 7、添加函数方法 (1)猫都是会叫的,让我们看看怎么在文档中添加“说话”的功能 // 记得一定要在构造生成Model之前把这个方法添加到Schema...silence.save(function(err, silence) { if(err) return console.log(err); silence.speak(); } 9、查询 随着时间的流逝...if(err) return console.log(err); console.log(doc); } 10、结言 还是回到开头,这篇文章主要还是翻译了官网然后加上自己的一些理解以较白话的形式呈现出来的
接下来看看Nodejs能不能操作这个网站的“记忆系统”呢?如果可以操作又是如何操作的呢?一起进入Nodejs与数据库的内容学习吧。...重复执行了几次node app后,看看上面代码的执行结果。 ?...还有最大的亮点就是支持SQL语句了,有了SQL语句很多复杂的查询都可以被实现,如多个表之间的操作便可以通过一个SQL语句实现,非常便捷。...语句,执行完成之后进行一次查询。...数据接口的提供者由FileDB内的状态值来决定,所以在用户数据接口请求时先获取FileDB内的状态判断。3.
重复执行了几次node app后,看看上面代码的执行结果。...还有最大的亮点就是支持SQL语句了,有了SQL语句很多复杂的查询都可以被实现,如多个表之间的操作便可以通过一个SQL语句实现,非常便捷。...语句,执行完成之后进行一次查询。...数据接口的提供者由FileDB内的状态值来决定,所以在用户数据接口请求时先获取FileDB内的状态判断。3....结果展示 a. 开关接口设置数据库为mysql b.
线上服务:PM2 + nginx 第二章 选择nodejs框架 2-1 nodejs框架选型-开始 所用常见的nodejs框架中,Koa2是最简单、最小的 目的扩充广度,让你了解有这门技术 Koa2...新建路由 /api/db-check,用于展示结果。...('useCreateIndex', true) mongoose.set('useFindAndModify', false) // 开始连接( 使用用户名和密码时,需要 `?...OAuth2验证 上述SSO是oauth的实际案例,其他常见的还有微信登录、github登录。即,当涉及到第三方用户登录校验时,都会用到OAuth2.0标准。...连接mongodb服务 Schema定义数据格式的规范 以Model规范Collection 规范数据操作的APi const mongoose = require('..
1.2 准备工作 1.首先你必须安装MongoDB和NodeJS 2.在项目只能够创建一个数据库连接,如下: var mongoose = require('mongoose'); //引用...1.4 Schema.Types NodeJS中的基本数据类型都属于Schema.Type,另外Mongoose还定义了自己的类型 //举例: var ExampleSchema =...两种隐藏的对象,相关内容请查看NodeJS-API 1.6 关于Mixed Schema.Types.Mixed是Mongoose定义个混合类型,该混合类型如果未定义具体形式。...6.1 查询的方式 通常有2种查询方式,一种是直接查询,一种是链式查询(2种查询都是自己命名的) 6.1.1 直接查询 在查询时带有回调函数的,称之为直接查询,查询的条件往往通过API来设定,例如...,分的比较明细,如果不带callback,则返回query,query没有执行的预编译查询语句,该query对象执行的方法都将返回自己,只有在执行exec方法时才执行查询,而且必须有回调。
Mongoose 索引 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快,MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧。...Mongoose 中除了以前创建索引的方式,也可以在定义 Schema 的时候指定创建索引。...// 定义schema时添加索引 var UserSchema=mongoose.Schema({ name:{ type:String, // 普通索引...Mongoose 的静态方法与实例方法 为 schema 添加静态方法时通过statics关键字添加,添加实例方法通过methods 关键字添加。.../db.js'); // 定义schema时添加索引 var UserSchema=mongoose.Schema({ name:{ type:String, /
Mongoose 安装 npm i mongoose -S 添加 mongodb 的配置文件 module.exports = { // mongodb 连接配置 mongodbConf: {...password) { url = `mongodb://${user}:${password}@${host}:${port}` // prd 环境 } // 开始连接( 使用用户名和密码时,...Date 和时区 mysql 和 Mongodb 在查询数据时,看着时间都不对,之间相差了八个小时,这跟时区有关系。...在 nodejs 中,new Date() 会显示世界标准睡觉,和北京时间相差八个时区,也就是八个小时,同理, new Date('2022-06-18 14:00:00') 的结果是 2022-06-...如果想要获取当前时区的时间,只需要使用 toString() 即可。
5、mongoose验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。...enum: { values: ['html', 'css', 'javascript', 'node.js'], message: '分类名称要在一定的范围内才可以...console.log(result)) .catch(error => { // 获取错误信息对象 const err = error.errors; // 循环错误信息对象...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的,要查询文章的所有信息包括发表用户,就需要用到集合关联。...使用id对集合进行关联 使用populate方法进行关联集合查询 集合关联实现 // 用户集合 const User = mongoose.model('User', new mongoose.Schema
('User', userSchema); // 查询用户集合中的所有文档 User.find().then(result => console.log(result)); // 通过_id字段查找文档...({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 选择要查询的字段 // User.find().select('name...console.log(result)) // 根据年龄字段进行降序排列 // User.find().sort('-age').then(result => console.log(result)) // 查询文档跳过前两条结果...('User', userSchema); // 查找到一条文档并且删除 // 返回删除的文档 // 如何查询条件匹配了多个文档 那么将会删除第一个匹配的文档 // User.findOneAndDelete..., // 枚举 列举出当前字段可以拥有的值 enum: { values: ['html', 'css', 'javascript', 'node.js'], message: '分类名称要在一定的范围内才可以
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。...MongoDB 提供了高性能、高可用、支持分片及面向文档等特性,是 Nodejs 应用程序最受欢迎的非关系型数据之一。...读文件时,先根据查询条件在 files 集合中找到对应的文档,同时得到“_id”字段,再根据“_id”在chunks 集合中查询所有“files_id”等于“_id”的文档。...最后根据“n”字段顺序读取 chunk 的“data”字段数据,还原文件。 存储过程如图下所示: fs.files 集合存储文件的元数据,以类 json 格式文档形式存储。...以下是一个 nodejs 版本的代码: const mongoose = require('mongoose') const fs = require('fs') const Promise = require
SQL查询优化的主要目的是: 减少响应时间并提高查询性能 减少 CPU 执行时间以获得更快的结果 最大限度地减少用于提高吞吐量的资源数量 SQL 查询优化是如何完成的?...SQL 查询优化包括以下基本任务: 检测需要改进的关键部件 分析查询执行以查找导致性能不佳的问题 改进查询执行计划以优化查询 最后,查询执行涉及将查询优化步骤生成的计划转化为操作,如果没有发生错误,此步骤将返回结果给用户...避免循环内的查询 循环中的 SQL 查询运行不止一次,这会显着降低运行速度,这些查询会不必要地消耗内存、CPU 能力和带宽,这会影响性能,尤其是当 SQL 服务器不在本地计算机上时,删除循环内的查询可提高整体查询性能...SQL 查询优化很重要,原因有很多,包括: 在 SQL 数据库中提供更快的结果 降低每个查询的处理成本 降低数据库的查询处理压力 为查询处理消耗更少的内存 提高系统的整体性能 组织可以通过更快的响应时间获得可靠的数据访问和高水平的性能...,优化 SQL 查询不仅可以提高整体系统性能,还可以提高组织的声誉,最终,SQL 查询优化的最佳实践帮助用户获得准确、快速的数据库结果。
利用异步io,让单线程远离阻塞,以更好的充分利用cpu。需要强调,这里得单线程仅仅是js执行在单线程罢了。再node中,无论事*nix还是Windows平台,内部完成io任务的另有线程池。...Node的循环机制,启动时又一个死循环,每执行一次循环体称为Tick。每次循环处理事件。如果事件存在回调则处理回调。接着处理下一个事件。 在Node中,事件来源有网络请求,文件io等。...事件循环时典型的生产者/消费者模型,异步io,网络请求是生产者,源源不断等为node提供不同的事件,这次事件被传递导对应的观察者那里,事件循环则从观察者那里取出事件并处理 Node8起新增了 util.promisify...浏览器和NodeJS基于不同的技术实现了各自的 Event Loop。 可以简单理解为不断执行的死循环 浏览器的Event Loop是在 html5 的规范中明确定义。...NodeJS的Event Loop是基于libuv实现的。可以参考 Node 的官方文档以及 libuv 的官方文档。
领取专属 10元无门槛券
手把手带您无忧上云