下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); const db =...Number 定义数字 Date 定义日期 Buffer 定义二进制 Boolean 定义布尔值 Mixed 定义混合类型 ObjectId 定义对象ID Array 定义数组 Decimal128 Map...约束能用对象的方法描述数据类型 是否必须 是否重复 默认值 等,如下定义了一个用户表结构 注意:如果定义表结构时没有定义_id,mongoose会自己添加一个该字段,该字段不会重复,类型为ObjectId...添加`createdAt updatedAt`创建时间和更新时间两个字段 } ); 如果在定义了结构后需要添加新字段,在实例上使用add()方法 创建表model 通过mongoose.model...Documents,向数据库中查找到的也是这种类型数据 const user = new User(userData); 保存save 获得具体的表后只需要调用Model.prototype.save
tangseng 中添加一个新的电影 Interstellar // $push 用于向数组中添加一个新的元素(即可以重复添加) // $addToSet 向数组中添加一个新元素,如果数组中已经存在了该元素...;-1 表示降序显示该字段的数据,0 表示不显示该字段的数据。...4.5 Schema--模式对象(约束对象) 使用 Mongoose 你必须经常定义模式。 模式为集合中的文档定义字段和字段类型。 ...// 将 json 转换为 Map 对象 // Map map = gson.fromJson(json, Map.class); // System.out.println...(map); // {name=孙悟空, age=18.0, gender=男} // 将 json 转换为 Student 对象 Student stu = gson.fromJson
首先,我们对自己要存储的数据结构schema进行相关的定义: const mongoose = require('mongoose') const Schema = mongoose.Schema /.../ 定义留言字段 let MessageSchema = new Schema({ // 关联字段 -- 用户的id userId: { type: mongoose.Schema.Types.ObjectId...这就是涉及到了pid这个字段,也就是父节点的id: 话题的pid为-1,话题下留言的pid为话题的记录值。...data.map(i => i....(item => { const children = JSON.parse(JSON.stringify(resReply.filter(i => i.pid === item.
1 Web架构 web总共分为三个部分: 客户端 服务器 数据库 web网站访问过程: 客户端向服务器发送请求 服务器操作数据库 数据库将结果返回给服务器 服务器将结果响应给客户端 2 数据库概念 数据库...MongoDB 简介 MongoDB是为快速开发互联网Web应用设计的数据库系统 MongoDB设计目标是极简、灵活、作为Web应用栈的一部分 MongoDB的数据模型是面向文档的,文档是一种类似于JSON...的结构 简单来说就是MongoDB数据库存储的是各种各样的JSON 增强版的JSON,叫做BSON,可以存储二进制数据,可以认为就是JSON 4 安装MongoDB 下载安装 下载地址:https://....drop() 删除集合 db.dropDatabase() 删除数据库 数据库中数据一般不会真正的删除,所以删除的方法很少调用 一般都是单独添加一个字段,表示数据是否删除 这种删除只是程序上的删除...多对多(many to many) 分类 - 商品 老师 - 学生 添加字段值为数组 11 插件操作数据库 大部分使用程序来完成数据库操作 Mongoose 让我们可以通过 Node 操作 MongoDB
缓存(Cache) 所有服务端响应都要被标为可缓存或不可缓存,减少前后端交互,提升了性能。 统一接口(Uniform Interface) 接口设计尽可能统一通用,提升了简单性、可见性。...查询 分页 字段过滤 如果记录数量很多,服务器不可能都将它们返回给用户。...客户端发起非登录请求时,假如服务器给了 set-cookie,浏览器会自动在请求头中添加 cookie。 服务器接收请求,分解 cookie,验证信息,核对成功后返回 response 给客户端。...let TYPE_MAP = Parameter.TYPE_MAP = { number: checkNumber, int: checkInt, integer: checkInt,...安装 mongoose npm install mongoose -S 连接及配置 const mongoose = require("mongoose"); mongoose.connect(
横向扩展(水平扩展): MongoDB支持横向扩展,可以通过添加更多的节点来提高性能和容量。这种能力使得MongoDB在处理大规模数据和高负载时表现出色。...JSON风格的文档: MongoDB的文档采用JSON风格的格式,这使得数据在应用程序和数据库之间的映射更为自然。这种文档存储的方式也使得数据更易于理解和使用。...这使得Node.js在处理I/O密集型任务时表现出色,能够实现更高的吞吐量和更低的响应时间。...这使得开发人员能够编写高效的、非阻塞的代码,从而更好地利用系统资源并提高应用的响应能力。 跨平台: Node.js可以在多个平台上运行,包括Windows、macOS和各种Linux发行版。...db.js const mongoose = require('mongoose') //连接mongodb数据库 mongoose.connect("mongodb://localhost:27017
而 GraphQL 就是为了解决这些问题而来的,向服务端发送一次描述信息,告知客户端所需的所有数据,数据的控制甚至可以精细到字段,达到一次请求获取所有所需数据的目的。...首先是字段,字段请求的是一个数据单元。同时在 GraphQL 中,标量字段是粒度最细的一个数据单元了,同时作为返回 JSON 响应数据中的最后一个字段。...Schema 本身并不代表你数据库中真实的数据结构,它的定义决定了这整个端点能干些什么事情,确定了我们能向端点要什么,操作什么。...Actor: { movies(prev, args, context) { return Promise.all( prev.movies.map...Movie: { actors(prev, args, context) { return Promise.all( prev.actors.map
2.2 JavaScript与现代前端框架JavaScript用于为Web页面添加交互性。...以下是一个Babel配置示例:json{ "presets": ["@babel/preset-env"]}三、移动端开发3.1 响应式设计与媒体查询响应式设计是为了适应不同屏幕尺寸的设计方法。...媒体查询是实现响应式设计的关键技术。...javascript// models/User.jsconst mongoose = require('mongoose');const userSchema = new mongoose.Schema...e.target.value)} /> Add Task {tasks.map
Diff: 这是主要属性,它是两个 JSON 的 diff 如果你希望对自己的应用程序有意义,可以添加更多字段,也可以根据需要更改和升级架构。...('Log', LogSchema) 步骤2:编写一个函数来获得 2 个 JSON 之间的差异 所以下一步是你需要一个可重用的函数,它将动态创建两个 JSON 的 diff。...函数和 DOM 节点则进行严格相等的比较,即使用 ===。 这里我们迭代每个对象的属性和值,并将它与旧对象进行比较。...const mongoose = require('mongoose') mongoose.plugin(require('....if (name) user.name = name return user.save() }) .then(result => { res.json
from 'koa' import logger from 'koa-logger' // 实例化koa const app = new Koa() app.use(logger()) // 答应一下响应信息...nodemon -x" } 本地调试 因为有的时候需要看到请求的信息,那我们又不能在代码中添加console.log(日志)这样效率低又不方便,所以我们需要借助编辑器来帮我们实现debug的功能。...tsconfig.json中开启sourceMap 为ts-node注册一个vsc的debug任务,修改项目的launch.json文件,添加一个新的启动方式 launch.json { "name...(tableName, AccSchema, tableName) // disposeAccInsertData 方法用来处理日志信息,有些字段嵌套太要扁平化深或者去除空值冗余字段..."scripts": { // 生产环 "prod": "pm2 start pm2.json" } 配置好pm2之后,我们只要在package.json中配置pm2 start pm2.json
7001 构建swagger-doc: Swagger – The World's Most Popular Framework for APIs. swagger会扫描配置的API文档格式自动生成一份json...swaggerdoc: { enable: true, package: 'egg-swagger-doc-feat', }}; 在config下的config.default.js添加如下配置...example: '请求成功' }, errorMessage: { type: 'string', example: '请求成功' }, },}; 再在contract下新建user.js(定义添加用户接口的字段...= app.mongoose const UserSchema = new mongoose.Schema({ mobile: { type: String, unique: true, required...this.ctx.model.User.count({}).exec() } // 整理数据源 -> Ant Design Pro let data = res.map
关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都一样,即使不是每条记录都需要所有的字段,但数据库会为每条数据分配所有的字段。...2.1 主要特性 面向集合存储,易于存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象 文件存储格式为 BSON (一种 JSON...下载地址 4 Koa + Mongodb 操作 4.1 安装链接 npm i mongoose -Sconst mongoose = require('mongoose') // 默认 27017 端口...,后台通过该字段相应返回隐藏字段前端传入格式:password;name;age, ?...await User.find({ $or: [{title: q}, {name: q}] }) 使用引用关联表 做个关注用户功能,用户模块添加字段// 获取列表会自动返回following字段 following
在 mongoose 中有效的 SchemaTypes 有: String Number Date Buffer Boolean Mixed ObjectId Array Decimal128 Map...在 mongoose 中有两种指定方式,字符串指定和对象形式指定。 字符串指定时在排除的字段前加 - 号,只写字段名的是包含。...数组字段相关操作符符号描述充当占位符,用来表示匹配查询条件的数组字段中的第一个元素 {operator:{ "arrayField.addToSet向数组字段中添加之前不存在的元素 { addToSet...push向数组字段的末尾添加元素 { push: { arrayField: value, ... } },value 是数组时可与 each 等修饰符组合使用pop移除数组字段中的第一个或最后一个元素...sort修饰 在指定的位置添加元素以更新数组字段 按照指定的规则排序 限制数组大小 存储数组 options lean: true 返回普通的 js 对象,而不是 Mongoose Documents
实际在数据库中产生的集合名为courses 1.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下的save方法将数据保存到数据库中。...字段前加上-表示不查询此字段 // User.find().select('name age -_id').then(result => { // console.log(result);.../ 降序排列,添加负号就可以 // User.find().sort('-age').then(result => { // console.log(result) // }) // skip...案例:用户信息增删改查 搭建网站服务器,实现客户端与服务器端的通信 连接数据库,创建用户集合,向集合中插入文档 当用户访问/list时, 将所有用户信息查询出来 将用户信息和表格HTML...进行拼接并将拼接结果响应回客户端 当用户访问/add时, 呈现表单页面,并实现添加用户信息功能 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能 当用户访问/delete
你可以通过向命令中添加 -y 标志来跳过。...然后,我们用 mongoose 包,通过读取 nodemon.json 带凭证的 url 去连接 MongoDB。...有了这些,我们现在可以转到 components 文件夹并向其文件中添加一些有意义的代码。...它们都接受参数,发送请求并得到响应,然后它们会检查请求是否成功并作相应处理。...main className='App'> My Todos {todos.map
1.2 创建文档 创建文档实际上就是向集合中插入数据。...数据库的所有操作都是异步操作 1.使用create方法创建文档 通过回调函数的方法获取异步API // 向集合中插入文档 Course.create({ name: 'JavaScript',...不想要的值在字段后面添加 - 再加属性 比如去掉默认的_id User.find().select('name email -_id').then(result => console.log(result...mongoose验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。...当用户访问/list时,将所有用户信息查询出来 实现路由功能 呈现用户列表页面 从数据库中查询用户信息 将用户信息展示在列表中 将用户信息和表格HTML进行拼接并将拼接结果响应回客户端
便于维护,根据需求平滑演进,添加或隐藏字段; GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。 2...., variables }) }) .then(res => res.json()) .then(json => { console.log(json...然后模拟创建一个本地数据库 localDb, 用于模拟存放添加的超级英雄数据: const localDb = {} 接下来声明 root 实现 schema 中的字段方法: const root =...我们是使用 mutation 的 createHero 字段添加两条数据: mutation { createHero(input: { name: "钢铁侠"...== -1 && req.headers.cookie.indexOf('auth') === -1){ // 向客户端返回一个错误信息 res.send(JSON.stringify
后端: 使用 Express.js 初始化 Node.js 项目是为了创建一个轻量级的 Web 服务器,能够处理 HTTP 请求并响应。 2....安全性和性能优化 添加 JWT 身份验证是为了确保 API 的安全性,只有持有有效 JWT(JSON Web Tokens)的用户才能访问受保护的资源。...// models/User.js const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ username...required: true, unique: true }, password: { type: String, required: true }, // 其他字段...安全性和性能优化 添加 JWT 身份验证和权限控制。
我使用的系统是Windows10系统,采用的开发工具是Visual Studio Code,另外还需要在VSCode中安装REST Client插件,用于发送HTTP请求和查看服务端的响应信息,类似于PostMan...const product = await Product.findById(req.params.id); // 删除查询到的产品 await product.remove(); // 向客户端发送删除成功的信息...()) // MongoDB模块 const mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/express-test...const product = await Product.findById(req.params.id); // 删除查询到的产品 await product.remove(); // 向客户端发送删除成功的信息...}) 我在实际使用VSCode的过程中,当使用async集合await调用MongoDB实现异步调用时保存,需要在源代码文件server.js的顶部添加如下一行: /* jshint esversion
领取专属 10元无门槛券
手把手带您无忧上云