,Vue全家桶(2.x)全部涉及。...后端 Node.js: 整个系统后端通过 Node.js 进行实现,通过 Express 框架实现后端的 REST 接口,并以 json 的形式进行输出,对于普通的post请求和文件上传类的post请求...熟悉了vue父子组件之间数据的传递和交互,熟悉了不相关的组件之间如何进行行为的触发和传值 掌握了如何在vue中 使用相关的ui框架和第三方插件 熟悉了组件化、模块化的开发思维,体会到了前后端分类开发的好处...加深了对nodejs和相关模块(path,nodemailer等)的理解和掌握 掌握了nodejs+mongoose操作数据库的一套完整的增删改查方法,体会到了图形统计的作用。...mark 个人信息页 ? mark
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。...同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。 2. Mongoose能做什么?...Mongoose,因为封装了对MongoDB对文档操作的常用处理方法,让NodeJS操作Mongodb数据库变得easy、easy、So easy!...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。... TestModel = db.model("test1", TestSchema); test1:数据库中的集合名称,当我们对其添加数据时如果test1已经存在,则会保存到其目录下,如果未存在,则会创建
使用 Mongoose 简单的建立一个博客数据库以及模型之间的关联。...categories: [ // 分类与分类模型相关联 6 { 7 type: mongoose.SchemaTypes.ObjectId, // 关联分类模型中的唯一 _id...populate()可以跟踪关联的_id,输出详细的内容。...输出内容如下: js 1{ 2 categories: [ 3 { _id: 5d30626d7fc5f875b856e403, name: 'vuejs', __v: 0 }, 4 {...0 } ], 11 _id: 5d3061bb5617a5750523af66, 12 title: '第2篇帖子', 13 __v: 22 14} COPY 使用分类模型反查文章 因为分类模型中不存在对
判断何时应该发送响应以及何时应该在 “后台” 继续处理(例如,将响应发送到客户端之后),这两个问题比较复杂。...这一层是放置您的业务逻辑。 遵循适用于 Node.js 的 SOLID 原则,它只是一个具有明确目的的类的集合。 这一层不应存在任何形式的 “SQL 查询”,可以使用数据访问层。...现在让我们来看一个使用 TypeDI 的 NPM 库示例,以下 Node.js 示例将引入 DI。 可以在官网查看更多关于 TypeDI 的信息。...放置一个 .env 文件,这个文件永远不能提交(但它必须与默认值一起存在于存储库中),然后,这个 dotenv NPM 包将会加载 .env 文件并将里面的变量写入到 Node.js 的 process.env...结论 我们深入研究了经过生产测试的 Node.js 项目结构,以下是一些总结的技巧: 使用 3 层架构。 不要将您的业务逻辑放入 Express.js 控制器中。
MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。...向数据库插入用户信息代码(users.js): var mongoose = require('....之后再次查看robomango,可以发现,users的collection自动生成,并成功插入数据。 ? 后端nodejs加密 但是前端对用户的登录信息进行加密,意义并不大。...别人可以直接截获登录信息,然后直接用sha1的字符串登录,因此,后端做加密才是王道。 在users.js中增加,node中自带的加密模块,crypto。...自此,完成了前后端对用户登录加密的全部流程,并存入数据库。
面向对象基础 面向对象概述 对象和构造函数(类)之间的关系 对象的属性和方法 原型与原型链 包装对象与内部实现 对象中实现继承方式 设计模式及实际运用 JavaScript高级 JS算法与排序算法 promise...基本用法与可视化工具 多人开发流程 git基本用法 命令行操作 分区及分支等概念 远程github操作 实战:多人协作开发项目 HTML5新功能 canvas绘图 svg绘图 音频与视频 本地存储与离线存储 地理信息...web Worker web Socket NodeJS基础 node与npm概念及使用 node模块方式 node常用内置模块 node爬虫与文件自动化处理 node搭建服务器与简单路由 mongodb...非关系数据库 mongodb安装与db操作 mongodb增删改查 mongodb与node结合开发 mongoose数据建模 mongoose与node结合开发 express框架 中间件与ejs模板引擎...框架 Angular框架简介 TypeScript基础与进阶 开发环境配置 架构、模块与组件 模板、元数据与数据显示 服务于指令 依赖注入 路由 实战:Angular与Node全栈开发 Hybrid App
线上服务:PM2 + nginx 第二章 选择nodejs框架 2-1 nodejs框架选型-开始 所用常见的nodejs框架中,Koa2是最简单、最小的 目的扩充广度,让你了解有这门技术 Koa2...3-8 介绍Redis 在项目中:npm i -S redis 然后根据前面Mysql以及Mongodb的调试方法,调试出本地的redis显示。...课程中关于redis的其它内容依旧是给出实战课让自己去学习,其它的什么也没说,而我本地也是安装过redis的,但是不记得如何启动了,于是我的步骤是这么展开的: 第一步:首先看本地的redis是否已删除...如图显示这个版本是5.0.8的,也就是说我之前电脑上其实是有redis的,我新安装的这个6.0.9的并没有用上。...后端验证成功,返回一段token字符串----将用户信息加密得到。 前端获取token之后,存储起来。 以后访问接口,都在header中带上token。
最近在学些NodeJs和Express框架开发后台接口,Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。...Express中怎么做用户登录和注册,以及jsonwebtoken的验证,需要在系统中安装MongoDB数据库;于是在自己的Windows10系统下使用VSCode跟着做,前提是要安装好NodeJs和Express...g nodemon cnpm install jsonwebtoken cnpm install bcryptjs cnpm install mongoose 另外,还需要在VSCode中安装扩展的rest-client...// 从MongoDB数据库express-auth中的User表查询所有的用户信息 app.get('/api/users', async(req, res) => { const users =...,发起对应的get、post请求,其中登录的请求在VSCode中如下图所示: ?
但cookie在客 户端维护的信息是不够的,所以CGI应用要模仿用户session,就需要在服务器端生成一个session文件存储起来,让原本无状态的CGI应用,通 过中间文件的方式,达到session...Nodejs的web服务器,也是CGI的程序无状态的,与PHP不同的地方在于,单线程应用,所有请求都是异步响应,通过callback方式返回数据。...是通过app.js中app.use的res.locals变量,通过框架进行的赋值。...我们避免这样的错误发生。 还记录路由部分里说的get,post,all的作用吗?我现在要回到路由配置中,再做点事情。...如果你也出现图片显示的内容,那么恭喜你了。 Nodejs使用Express3.0框架的第一步你已经完成了,并且还使用了ejs,bootstrap,mongoose库的使用。 希望此文对大家有所帮助。
这两天跟着B站的Johnny老师学习NodeJs+Express+MongoDB相关的知识点,前后跟着做了1小时搞定NodeJs(Express)的用户注册、登录和授权、Element UI + NodeJs...我使用的系统是Windows10系统,采用的开发工具是Visual Studio Code,另外还需要在VSCode中安装REST Client插件,用于发送HTTP请求和查看服务端的响应信息,类似于PostMan...的API接口请求利器 - rest client,这篇视频快速的讲解了VSCode中Rest-Client的使用,具体的还可以看VSCode中Rest-Client的使用教程。...然后在VSCode中打开终端,使用cnpm命令安装express和MongoDB的数据库模块mongoose和cors(支持跨域),命令如下: cnpm install express cnpm install...}) 在NodeJs中对MongoDB数据库进行增删改查 连接MongoDB数据库 新建一个MongoDB数据库模型,命名为express-test const mongoose = require('
/routes/users'); 所以待会我们还得继续修改完善index.js(我这里是直接把所有路径的处理方法全部放到index.js中,实际做的时候可以考虑细分出模块) 这里先不说index.js...nodejs驱动,可以在异步的环境下执行。...data数据中 uname的值 User.findOne({name:uname},function(err,doc){ //通过此model以用户名的条件 查询数据库中的匹配信息...doc){ //查询不到用户名匹配信息,则用户名不存在 req.session.error = '用户名不存在';...,所以最后也要先在mongodb中创建它,不然也有可能出错 未安装数据库的可以看看 这篇 ,检测数据库服务是否开启:浏览器打开localhost:27017 就能访问 ,然后给数据库添加nodedb
2.1 Web开发:Express + EJS + Mongoose/MySQL express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站。...mongoose 是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作。 mysql 是连接MySQL数据库的通信API,可以进行访问MySQL的操作。...2.3 Web聊天室(IM):Express + Socket.io socket.io一个是基于Nodejs架构体系的,支持websocket的协议用于时时通信的一个软件包。...Cheerio工作在一个非常简单,一致的DOM模型之上,解析、操作、渲染都变得难以置信的高效。基础的端到端的基准测试显示Cheerio大约比JSDOM快八倍(8x)。...2.8 前端包管理平台: bower.js Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,把功能分散到各个模块中,让模块和模块之间存在联系,通过 Bower 来管理模块间的这种联系
1.数据库相关概念 在一个数据库软件中可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个 数据集合中可以包含多条文档(具体的数据)。...术语 解释说明 database 数据库,mongoDB数据库软件中可以建立多个数据库 collection 集合,一组数据的集合,可以理解为JavaScript中的数组 document 文档,一条具体的数据...,可以理解为JavaScript中的对象 field 字段,文档中的属性名称,可以理解为JavaScript中的对象属性 2....Mongoose第3三方包 使用Nodejs操作MongoDB数据库需要依赖Node.js第 三方包mongoose 使用npm install mongoose命令下载 3.启动MongoDB...创建数据库 在MongoDB中不需要显式创建数据库,如果正在使用的数据库不存在,MongoDB会自动创建。
创建好的 Node.js 项目架构 大多数时候,我们在大团队中工作,不同的人处理系统的不同部分,如果事情没有得到妥当安排,就会变得混乱。...为什么好的项目架构如此重要 如前所述,好的项目架构非常重要,而混乱的架构可能会造成问题。下面是好的架构的一些好处。 使代码更具可读性和整洁性。 更容易避免重复代码。 更容易扩展和修改。...我们的示例应用程序是一个简单的用于身份验证的 REST API。当用户注册时,他们的信息被保存在 MongoDB 数据库中。当用户登录时,我们将验证他们的信息,如果验证成功,就返回一个令牌。...所有的文件和逻辑都保存在一个叫作 src 的文件夹中。 应用程序的入口和启动在 server.js 和 app.js 中。...准确显示错误信息是非常重要的,因为这有助于 API 用户和开发人员了解问题的根源。
在本教程中,我们将在服务器和客户端使用 TypeScript、React、NodeJS、Express 和 MongoDB 从头开始构建一个 Todo 应用程序。 我们从设计 API 开始。...在终端上运行这个命令,创建一个新的 NodeJS 应用程序: yarn init 它会询问几个问题,然后初始化应用程序。你可以通过向命令中添加 -y 标志来跳过。...代码编译成纯 JavaScript 后,dist 目录将用作输出文件夹。 我们还有一个 app.ts,它是服务器的入口。控制器、类型和路由也在它们各自以它们命名的的文件夹中。...dist/js 文件夹 rootDir: 告诉 TypeScript 编译 src 文件夹中的每个 .ts 文件 include: 告诉编译器包含 src 目录和子目录中的文件 exclude:...它们都接受参数,发送请求并得到响应,然后它们会检查请求是否成功并作相应处理。
,将安装目录下的bin目录放置在环境变量中。...24, //最小数值 max: 80 //最大数值 }, publishDate: { type: Date, // 默认值,没有插入信息时默认显示的值...(err[k]['message']); } }) 8.集合关联 通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户...案例:用户信息增删改查 搭建网站服务器,实现客户端与服务器端的通信 连接数据库,创建用户集合,向集合中插入文档 当用户访问/list时, 将所有用户信息查询出来 将用户信息和表格HTML...进行拼接并将拼接结果响应回客户端 当用户访问/add时, 呈现表单页面,并实现添加用户信息功能 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能 当用户访问/delete
它通过灵活使用控制反转、依赖注入和面向切面编程等设计理念,极大的规范了大型应用的架构,降低了模块之间的耦合度,从而提升了应用的开发效率。...在 NodeJS 的世界里,也存在一个全面借鉴 Spring 设计思想的框架,它在 github 上有将近 2w 的 star,npm 的周下载量超过 11w,它就是本文要介绍的 NestJS。...上文提到的几个框架对项目代码的架构要么是没约束,要么就是约束比较弱或者看起来很别扭。相比之下Nest的实现就很简洁,用起来很顺手。具体细节将在下文进行描述。...,这是Nest有别于其它 NodeJS 框架的地方,像极了 Spring。...连接数据库 例子中使用mongoose连接和操作本地MongoDB数据库。为了更方便使用,Nest提供了@nestjs/mongoose包,对mongoose包装了一层,使其更符合Nest的使用风格。
“无服务器架构”,从技术角度来讲是 FaaS 和 BaaS 的结合,FaaS(Function as a Service)是一些运行函数的平台。...不利于上下文重用:传动程序启动之后常驻内存,不存在冷启动问题,而 ServerLess 是基于事件驱动的,第一次请求来了之后会下载代码、启动容器、启动运行环境、执行代码,这个过程称为冷启动,但是以 AWS...API 的设计要保证职责单一、清晰合理、便于他人快速理解使用等原则,而 REST 也是 API 设计的一种准则,同时它也是一种架构思想,用于客户端与服务端资源传递与交互。...关于 RESTful 架构的更多理解,可参考阮一峰老师的博客 “理解RESTful架构” www.ruanyifeng.com/blog/2011/09/restful.html REST API 规划...作者简介:五月君,Nodejs Developer,慕课网认证作者,热爱技术、喜欢分享的 90 后青年,欢迎关注公众号「Nodejs技术栈」和 Github 开源项目 https://www.nodejs.red
Node的循环机制,启动时又一个死循环,每执行一次循环体称为Tick。每次循环处理事件。如果事件存在回调则处理回调。接着处理下一个事件。 在Node中,事件来源有网络请求,文件io等。...浏览器和NodeJS基于不同的技术实现了各自的 Event Loop。 可以简单理解为不断执行的死循环 浏览器的Event Loop是在 html5 的规范中明确定义。...NodeJS的Event Loop是基于libuv实现的。可以参考 Node 的官方文档以及 libuv 的官方文档。...libuv已经对Event Loop做出了实现,而HTML5规范中只是定义了浏览器中Event Loop的模型,具体的实现留给了浏览器厂商。...与前端 DOM 树上的事件并不相同, emitter 的触发不存在冒泡, 逐层捕获等事件行为, 也没有处理事件传递的方法。 Node.js 中 Eventemitter 的 emit 是同步的。
一、聊天室简单介绍 采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制。聊天室增加了 注册登录 模块 ,并将用户个人信息和聊天记录存入数据库....数据库采用的是mongodb , 并使用其相应mongoose对象工具来处理数据的存取。 功能主要涉及:群聊、私聊、设置个人信息、查看聊天记录、查看在线用户等 效果图: ? ...首先,数据库中存储了用户信息(user)和聊天内容(content), mongoose版的Schema如下: module.exports = { user:{ name:...如果用成这样就会出错: 实际测试的时候就会发现,比如你刚上线,这种方法就不会获得任何用户列表信息 因为console.log("user list --default:",docs) 会输出你这个新上线的用户...,再开启进入,就无需再次验证个人信息 但有两个不妥: session值的处理更新和用户上下线status的处理会很麻烦,很乱 用户列表的显示会有严重错误,其根源还是数据库中status
领取专属 10元无门槛券
手把手带您无忧上云