2.为每一个表单项添加name属性 3.添加实现学生信息功能路由 4.接收客户端传递过来的学生信息 5.将学生信息添加到数据库中 6.将页面重定向到学生信息列表页面 6.学生信息列表页 1.从数据库中将所有的学生信息查询出来...const serveStatic = require('serve-static'); // 引入处理日期的第三方模块 const dateformat = require('dateformat'... // 配置模板的跟目录 template.defaults.root = path.join(__dirname, 'views'); //导入模板变量,处理日期格式 template.defaults.imports.dateformat...formData += param; }); // querystring.parse()方法,能把字符串转换成对象模式 req.on('end', async () => {... // 将用户提交的信息添加到数据库中 await Student.create(querystring.parse(formData)); // 重定向
,由于我们基于 TypeScript ,所以选择了支持 TS 的包。...默认开启 app: true, // 是否加载到 agent 上,默认关闭 agent: false, // 是否加载开发者工具 graphiql, 默认开启。...apolloServerOptions: { tracing: true, // 设置为true时,以Apollo跟踪格式收集和公开跟踪数据 debug: true, // 一个布尔值,...**(CORS,Cross-origin resource sharing)**,是W3C标准,是一种机制,它使用额外的HTTP头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源...使用 graphql 或 rest 端点时,实际上不必担心使用 CSRF 保护。对服务的请求应该是无状态的,并且不真正依赖Cookie或会话数据。
同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档...执行下面代码检查默认数据库test,是否可以正常连接成功? ...MongoDB —— 是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以Document(以下简称文档)的形式存储(Document,就是一个关联数组式的对象,它的内部由属性组成,...一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。)...为了方便后面内容的学习和提高您的学习效率,以下基础数据均和后面内容紧密相连,所以必须按照以下结构方式来定义,请勿修改(默认数据库为test,集合为test1)。
您可以按照顺序阅读 全栈 Todolist-server 篇 Node(server) React(client) MongoDB(database) Typescript Todolist-database...2、咋们选择免费的集群 tab ? 3、所有的都默认选择即可 AWS 和 美国的服务器 ? 4、配置完以后,正式创建集群 ?...6、用户管理者配置 选择 ==password== 模式,用户名和密码,下面有随机密码的选项,使用后建议复制一下保存下来。其他的都默认,最后 ==Add User== ?...选择 Connect your application 默认 node, copy 这段代码,到我们 server 中的 app.ts 中就可以了。 ?...app.ts import express, { Express } from 'express'; import mongoose from 'mongoose'; import cors from
那么如何创建一个 Mongoose 插件,以更清洁的方式为你进行记录并简化 API 日志? Mongoose 中的插件是什么? 在 Mongoose 中,模式是可插入的。...插件就像一个函数,你可以在模式中使用它,并在模式实例上一次次地重用。 Mongoose 还提供全局插件,你可以将其用于所有模式。...isEqual:此方法支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号和类型化数组。...如果当前对象的 value 不等于前一个对象中相同属性的值:base[key] 如果该值是对象本身,我们递归调用函数changes 直到它得到一个值,它最终将作为 result[key]=value 存储在...现在我们需要使用架构上可用的 init 和 save 方法。 this.isNew():如果你正在创建新文档,那么只需返回 next()中间件。
Number 定义数字 Date 定义日期 Buffer 定义二进制 Boolean 定义布尔值 Mixed 定义混合类型 ObjectId 定义对象ID Array 定义数组 Decimal128...Map 约束能用对象的方法描述数据类型 是否必须 是否重复 默认值 等,如下定义了一个用户表结构 注意:如果定义表结构时没有定义_id,mongoose会自己添加一个该字段,该字段不会重复,类型为ObjectId...默认值 }, bio: String, //! 默认没有可以不写 }, { timestamps: true, //!...添加`createdAt updatedAt`创建时间和更新时间两个字段 } ); 如果在定义了结构后需要添加新字段,在实例上使用add()方法 创建表model 通过mongoose.model...: 创建表数据实例化model 通过传入具体的数据来实例化表,能获得一条具体的表数据,类型为Mongoose Documents,向数据库中查找到的也是这种类型数据 const user = new User
,最后决定使用的技术栈就是 koa+typescript+mysql+mongodb来搭建项目。...Typescript 网上特别多关于“为什么要用Typescript开发”,“Typescript开发的好处和坏处”,“为什么不用Typescript开发”等等的争论和文章,有兴趣的同学也可以去说道说道哈.../ 允许传入未定义字段 timestamps: true, // 默认会带上createTime/updateTime versionKey: false // 默认不带版本号 }) export...,就是路由可以引入装饰器写法,这样能减少重复工作和提高效率,有兴趣的同学可以看我上一篇博客哈。...,但是需要考虑的东西也是很多,而且因为很多插件都是第一次接触,所以整个项目实现的过程还是蛮坎坷的,基本上是那种摸石头过河。
morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。 9....它几乎可以覆盖到任何你想用的用例,在 Github 上的文档也可以帮你分分钟熟悉它的用法。 12....简单的讲就是对SQL查询语句的封装,让我们可以用OOP的方式操作数据库,优雅的生成安全、可维护的SQL代码。直观上,是一种Model和SQL的映射关系。...既然Nodejs的强项在于异步,没有理由不找一个强大的支持异步的数据库框架,与之配合。 14 Mongoose 地址:https://www.npmjs.com/package/mongoose ?...一个轻量级的JavaScript日期库,用于解析,验证,操作和格式化日期。 17. lodash 地址:https://www.npmjs.com/package/lodash ?
模式(schemas) 定义你的 schema Mongoose的一切都始于一个Schema。...该 versionKey 是每个文档首次创建时,由 mongoose 创建的一个属性。包含了文档的内部修订版。此文档属性是可配置的。默认值为__v。...到这里,已经基本介绍完了Schema,接下来看一下SchemaTypes 模式类型(SchemaTypes) SchemaTypes为查询和其他处理路径默认值,验证,getter,setter,字段选择默认值...default: 任意类型或函数,为路径设置一个默认的值。如果值是一个函数,则函数的返回值用作默认值。...,验证值是否小于等于给定的最大的值 日期 min: Date max: Date 现在已经介绍完Schematype,接下来让我们看一下Connections。
8、MongoDB 的安装目录结构 ? 2.4 启动 MongoDB 1、将 MongoDB 的 bin 目录添加到 path 下(这里我们使用 bruce 的用户变量) ?...比 Node 原生的 MongoDB 驱动更容易 4.3 新的对象 mongoose 中为我们提供了几个新的对象: Schema(模式对象) • Schema 对象定义约束了数据库中的文档结构。...并且可以对 connection 对象上的一些事件进行监听,来获悉数据库连接的开始与端开。比如,可以通过 open 和 close 事件来监控连接的打开和关闭。...4.5 Schema--模式对象(约束对象) 使用 Mongoose 你必须经常定义模式。 模式为集合中的文档定义字段和字段类型。 ...如果你的数据是被结构化成支持模式的,这是非常有用的。 简单来说,模式就是对文档的约束,有了模式,文档中的字段必须符合模式的规定。否则将不能正常操作。
一、Node.js默认使用commonJs的模块化方案,TypeScript默认是ES6的模块化方案,两者有本质区别。.../(使用相对路径),暴露接口使用exports或者module.exports 2.TypeScript的 import * from url 的引入依赖,需要填写完整的相对路径,否则是找不到模块的...,暴露接口使用export . 3.Node中使用TypeScript需要下一些包去支持,比如express框架这些,还有一些支持内置对象的包: 4.github源码下载地址 "dependencies...,所以我们把外部函数变成 async 函数, 这样可以配合 await 实现最佳异步,还可以获取他们的返回值进行 if 判断。...= require('mongoose'); module.exports = new Promise((resolve, reject) => { mongoose.connect('mongodb
一,先定义了一个goods(商品)的models var mongoose = require('mongoose'); var Schema = mongoose.Schema; var productSchema...(我们默认是可以直接添加的)===>userDoc为登录后的用户,我们为此用户的购物车添加商品 我们goods路由中: Goods.findOne({...因为Mongoose是個ODM (Object Document Mapper),类似于操作关系型数据库使用的ORM(Object Relational Mapper),我们使用Mongoose取到的数据的结构是要依赖于我们定义的...在这里需要说明一下,就是虽然我们给schema附加属性,但是这只是实现能真正挂在该schema上,并没有添加到schema中。...比如上述的只是想实现在添加商品的时候,顺便把productNum和checked的值赋给users表中。我们无须把属性存储到goods中。
Mongoose和MongoDB,以编写集成测试 设置 Node.js 项目 首先,让我们创建一个名为 typescript-bot 的新目录。...将你的 Discord Bot 添加到你的服务器 为了测试我们的机器人,需要一台Discord服务器。你可以使用现有服务器或创建新服务器。...我们是不是只需要将其复制粘贴到此处,或直接从环境中加载值就可以了呢? 都不是。相反,让我们用依赖注入框架 InversifyJS 来注入令牌,这样可以编写更易于维护、可扩展和可测试的代码。...', error) 10}); 现在,启动机器人并将其添加到你的服务器。...恭喜你干净利落地用 TypeScript 和 DI 完成了它!这里的 TypeScript 依赖项注入示例是一种模式,你可以将其添加到你的知识库中一遍在其他项目中使用。
,虽然它提供的能力非常简单,但对于一些工具平台的开发完全可以胜任,并且可以写出各种千奇百怪的 MVC 模式(如果对服务端 MVC 不是很清晰可以阅读 服务端 MVC 之 Model2 的衍生)。...设计完成后将开发态页面使用 Webpack 打包构建,构建目录为服务端 Express 的静态资源目录。首屏渲染的工作交给 Ejs 模板引擎(事实上也可以直接使用 HTML 字符串渲染)进行处理。...为了支持客户端 TypeScript 语法,需要扩展 Nuxt 的默认 Webpack 配置,利用 Nuxt 的模块/注册自定义loaders配置 ts-loader,配合 nuxt-property-decorator.../server" build:使用 Webpack 构建 Nuxt 资源包以及使用 Backpack 构建服务端入口文件(转义 TypeScript) pm2:以生产模式启动一个进程守护的 Web 服务器...需要注意客户端向服务端发送请求是跨域的,因此在服务端的开发态环境需要配置允许跨域。 **温馨提示:**一个服务端渲染框架楞是让我拆成了前后端开发分离的框架模式。
这篇文章是基于我多年来在处理一些糟糕的 Node.js 项目结构、不好的设计模式以及无数个小时的代码重构经验的探索研究。...└───types # 对于 Typescript 的类型声明文件(d.ts) 以上不仅仅是组织 JavaScript 文件的一种方式......图片描述 因为有一天,您将希望在一个 CLI 工具上来使用您的业务逻辑,又或从来不使用。对于一些重复的任务,然后从 Node.js 服务器上对它自己进行调用,显然这不是一个好的主意。 ?...DI 或控制反转(IoC)是一种常见的模式,通过 “注入” 或通过构造函数传递类或函数的依赖关系,有助于代码的组织。...放置一个 .env 文件,这个文件永远不能提交(但它必须与默认值一起存在于存储库中),然后,这个 dotenv NPM 包将会加载 .env 文件并将里面的变量写入到 Node.js 的 process.env
https://github.com/garronej/evt Inspect: 移动Web DevTools的“新标准”(英) 适用于macOS和Windows的开发人员工具,可检查和调试iOS设备上的...支持在设备上通过USB或WiFi调试Safari, WebViews(和Chrome),也可以在windows上调试ios web,同时支持多种框架的devtools等多个特点。...https://inspect.dev/ Mongoose 5.10新增乐观并发控制(乐观锁)(英) Optimistic concurrency核心思想是追踪文档的版本并在每次保存后增加版本,当在加载文档和保存文档之间...特性可以帮助缓解运动敏感人群的不适(英) 屏幕上的某些运动可能会对运动敏感的人产生影响,如眩晕,恶心等。...Plugin System(英) 使用设计模式更好的设计代码结构 https://javascriptweekly.com/link/94726/web tools And codes Print.js
序列文章 从项目中由浅入深的学习vue,微信小程序和快应用 (1) 从项目中由浅入深的学习react (2) 从项目中由浅入深的学习typescript (3) 前言 node.js的出现前端已经可以用...:解析router的中间件 mongoose :基于mongdodb的数据库框架,操作数据 nodemon:后台服务启动热更新 3.项目目录 ├── app...├── middleware // 中间件目录 │ │ └── resFormat.js // 格式化返回值 │ ├── models...url:请求url;originalUrl请求原始URL;href:完整URL;hostname:主机名;type:请求头类型; response属性 header:响应头;status:状态,未设置默认为...主要API API 作用 Schema 数据模式,表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力 model schema生成的模型,可以对数据库的操作
1.2 创建文档 创建文档实际上就是向集合中插入数据。...不想要的值在字段后面添加 - 再加属性 比如去掉默认的_id User.find().select('name email -_id').then(result => console.log(result...validate: 自定义验证器 default: 默认值 获取错误信息:error.errors['字段名称'].message // 创建集合规则 const postSchema...27017是mongodb数据库的默认端口 mongoose.connect('mongodb://localhost/playground', { useNewUrlParser:...'end', async () => { let user = querystring.parse(formData); //将用户提交的信息添加到数据库中
让开发者可以在浏览器上就可以体验 Windows 11 操作系统的魅力。...React + TypeScript技术进行开发,提供完整的类型定义文件,支持国际化语言,同时还支持HLS(.m3u8)和H264视频格式,是一款短小精悍的React播放器。...技术上,该项目是使用 React 以及 webpack、Node.js、ESLint、styled-components 和 cypress 构建的。...该应用使用最新的 React 特性,例如带有Hooks的函数组件。此外,该项目还使用了几个自定义的轻量级 UI 组件,包括模态框和日期选择器等。...、MongoDB、Mongoose 等技术实现。
getter 函数访问 fullName 属性: console.log(axl.fullName); // Axl Rose 如果对 document 使用 toJSON() 或 toObject(),默认不包括虚拟值...你也可以设定虚拟值的 setter ,下例中,当你赋值到虚拟值时,它可以自动拆分到其他属性: personSchema.virtual('fullName')....如果值为真,为此属性添加require验证器 default: 任何值或函数 设置此路径默认值,如果是函数m,函数返回值为默认值 select: 布尔值 指定query的默认projections validate...()连接MongoDB,默认端口27017 操作缓存 就是说不必等待上面的connect连接成功后,就可以使用创建的 Mongoose models 禁用缓存,要修改 bufferCommands配置...它允许你在相同的底层MongoDb collection上使用部分重叠的 schema 建立多个 model。
领取专属 10元无门槛券
手把手带您无忧上云