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

【node笔记】前后端分离用户注册功能

安装:npm install -g nodemon 作用:代码发生变化自动重启服务 名称:mongoose 安装:npm i mongoose -S 作用:数据库 名称:body-parser.../model/connect"); 9.在 model 文件夹下新建 user.js 用来创建用户集合 //创建用户集合 //引入mongoose模块 const mongoose = require(..."mongoose"); const { Schema, model } = mongoose; //设定集合规则 const userSchema = new Schema({ account...User, } 10.通过 user.js 插入一条测试数据, 通过 mongodb compass 工具查看集合是否建立成功, 然后注释掉插入测试数据代码 // 插入一条测试数据 User.create.../model/user.js"); //匹配二级请求路径 注册接口 register.post("/register", async (req, res) => { // 数据库中查询用户是否存在

1.5K30

Mongoose 实现关联查询踩坑记录

文档内嵌与引用模式 MongoDB 是一种文档对象模型,使用起来很灵活,它文档结构分为 内嵌引用 两种类型。...创建一个 aggregateTest.js 重点在于 $lookup 对象,代码如下所示: $lookup.from: 在同一个数据库中指定要 Join 集合名称。...$lookup.foreignFiled: 被 Join 集合字段,本示例中是 Books 表 bookId 字段。 $as: 别名,关联查询返回这个结果起一个新名称。...MongoDB 官方文档 #lookup-aggregation[2] Mongoose Virtual populate 实现 Mongoose populate 方法默认情况下是指向要关联集合...在我们本节示例中 Authors 集合会关联 Books 集合,那么我们就需要在 Authors 集合中定义 virtual, 下面的一些参数 $lookup 是一样,个别参数做下介绍: ref:

26.3K20

你真的了解mongoose吗?

每个 schema 映射到 MongoDB 集合(collection)定义该集合(collection)中文档形式。...定义一个具有给定名称虚拟属性,该名称可以获取/设置这个路径 索引 你可以用 schema 类型选项声明 MongoDB 索引。 index: 布尔值,是否在属性中定义一个索引。...mongoose.connect(uri, options, function(error) { // 检查错误,初始化连接。回调没有第二个参数。...如果出错,则 error 是出错信息,result 是 null;如果查询成功,则 error 是 null, result 是查询结果,查询结果结构形式是根据查询方法不同而有不同形式。...看完Models,最后让我们来看下在实战中比较有用Populate 联表(Populate) Mongoose populate() 可以连表查询,即在另外集合引用其文档。

41.4K30

GraphQL 基础实践

这也意味着 GraphQL 并不关心数据存在什么数据库上。 同时 GraphQL 也是一套标准,在这个标准下不同平台不同语言有相应实现。...操作名称:操作名称是个可选参数,操作名称对整个请求并不产生影响,只是赋予请求体一个名字,可以作为调试依据。...内联选择集概念用法与普通片段基本相同,不同是内联片段直接声明在选择集内,并且不需要fragment声明。...借助 ThinkJS 强大数据 模型功能,我们只需要以数据集合名称作为文件名建立文件并定义模型即可使用,相比 mongoose 原生操作更为简单。...回忆前面的数据模型定义,里面的 movies actors 字段是一组另一个集合中数据引用,目的是方便建立电影演员信息之间关系以及维护,在 Resolver 运行之后,movies actors

12.8K20

大数据技术之_22_MongoDB学习_MongoDB 简介、下载、安装、启动、配置关闭 + MongoDB 基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

在 MongoDB 中,数据库集合都不需要手动创建,当我们创建文档时,如果文档所在集合或数据库不存在会自动创建数据库集合。...(即通过数据冗余) 修改文档   db.collection.update()   可以在 update() 中传递两个参数,第一个是查询文档,第二个是新文档,这样符条件文档将会被新文档所【替换】...注意:不同 MongoDB 版本, connect() 函数中参数不一样。...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, schema): // modelName 就是要映射集合名称mongoose 会自动将集合名称变成复数...,通过 Model 才能对数据库进行操作 // mongoose.model(modelName, schema): // modelName 就是要映射集合名称mongoose 会自动将集合名称变成复数

17.7K30

MongoDB增删改查操作

1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数实例即可创建集合。...= mongoose.model ('Course', courseSchema); //第一个参数是集合名称,第二个是集合规则。...在项目根目录下输入以下命令导入 mongoimport -d 数据库名称 -c 集合名称 --file 要导入数据文件 4.查询文档 find()方法 返回一组文档 // 根据条件查找文档(条件为空则查找所有文档...validate: 自定义验证器 default: 默认值 获取错误信息:error.errors['字段名称'].message // 验证规则可以跟两个参数,第二个参数表示自定义错误提示信息...通常不同集合数据之间是有关系,例如文章信息用户信息存储在不同集合中,但文章是某个用户发表 要查询文章所有信息包括发表用户,就需要用到集合关联。

6.2K10

Mongoose 插件记录Node.js API日志

现在已经有了 npm 日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行ORM Mongoose 讨论 Node.js Express 程序中 API 日志记录。...Mongoose 还提供全局插件,你可以将其用于所有模式。例如我们将会编写一个插件,它将创建两个 jsonsdiff 并写入 mongodb。...Diff: 这是主要属性,它是两个 JSON diff 如果你希望对自己应用程序有意义,可以添加更多字段,也可以根据需要更改升级架构。...result 是累加器,是可变。 _.isEqual: 在两个值之间进行深度比较,以确定它们是否相等。...isEqual:此方法支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号类型化数组。

2.7K40

分析 CVE-2019-0708 (BlueKeep)

在第17行,a3v6 + 88之间有一个字符串比较,如果两个字符串相等则返回v6。因此,我们可以假设a3是要查找通道名称,v6是通道结构,v6 + 88是通道结构中通道名称。...每次断点触发时,我都会检查通道名称调用堆栈。 ?...随后通道名称是“CTXTW”,“rdpdr”,“rdpsnd”“drdynvc”。 不幸是,只有FindChannelByName成功(即通道已存在)才会触及易受攻击代码路径。...补丁前后代码差异 本质上,MS_T120通道被绑定两次(一次在内部,然后由我们一次)。由于通道绑定在两个不同id下,我们得到两个单独引用。...当使用一个引用来关闭通道时,将删除引用,通道也是如此; 但是,另一个参考仍然存在(称为免费使用后)。使用剩余引用,现在可以编写不再属于我们内核内存。

1.4K30

分析CVE-2019-0708(BlueKeep)

在第17行,a3v6 + 88之间有一个字符串比较,如果两个字符串相等则返回v6。因此,我们可以假设a3是要查找通道名称,v6是通道结构,v6 + 88是通道结构中通道名称。...每次触发断点时,我都会检查通道名称调用堆栈。...第一次调用IcaBindVirtualChannels时callstackchannel名称 第一次调用IcaBindVirtualChannels是为了我想要频道MS_T120。...随后通道名称是“CTXTW”,“rdpdr”,“rdpsnd”“drdynvc”。 不幸是,只有FindChannelByName成功(即通道已存在)才会触及易受攻击代码路径。...由于通道绑定在两个不同id下,我们得到两个单独引用。 当使用一个引用来关闭通道时,将删除引用,通道也是如此; 但是,另一个参考仍然存在(称为免费使用后)。

75640

MongoDB增删改查操作

1.MongoDB增删改查操作 1.1 创建集合 创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数实例即可创建集合。...: Boolean ​ }) // 使用规则创建集合 // 1.集合名称 // 2.集合规则 const Course = mongoose.model('Course', courseSchema);...mongoimport –d 数据库名称 –c 集合名称 –file 要导入数据文件 显示如下结果表示导入文件成功: ? 显示如下结果表示导入文件成功: ?...1.7 集合关联 通常不同集合数据之间是有关系,例如文章信息用户信息存储在不同集合中,但文章是某个用户发表,要查询文章所有信息包括发表用户,就需要用到集合关联。...使用ID将文章集合作者集合进行关联 author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } })); //联合查询 Post.find

19.8K30

高并发系统设计-redis技术梳理

序列化命令时间复杂度很高 EXISTS KEY: 检查给定 key 是否存在,时间复杂度O(1),若 key 存在,返回 1 ,否则返回 0 EXPIRE key seconds:这个命令可以说是经常用...另外,为了正确实现这一用法,你可能需要加锁以避免多个客户端同时进行缓存重建(也就是多个客户端,同一时间进行sort操作,并保存为结果集),具体参见SETNX命令 SET(集合命令梳理)...SINTER:返回集合交集,SINTER A B,返回集合AB相同元素 SINTERSTORE:返回集合交集并存储,SINTERSTORE C A B 返回集合AB相同元素,并存储到C。...SISMEMBER key member:判断 member 元素是否集合 key 成员。如果 member 元素是集合成员,返回 1 。...回复中频道排列顺序执行命令时给定频道排列顺序一致。 不给定任何频道而直接调用这个命令也是可以, 在这种情况下, 命令只返回一个空列表。

1K10

Node.js基于Express框架搭建一个简单注册登录Web功能

,因为express因为版本不同使用方式也不同,我这算是目前最新了吧 ?...__express renderFile都可以, 不用管它是什么,它能那样用就行了 然后我们知道需要这些模板文件,那就创建它们吧 ?...我们通过Mongoose去创建一个“集合”并对其进行增删改查,就要用到它三个属性:Schema(数据属性模型)、Model、Entity   这里简单介绍一下,更详细用法可以自行查阅~ Schema...写入文件 models.js  一个user集合,里面有namepassword属性 module.exports = { user:{ name:{type:String...,所以最后也要先在mongodb中创建它,不然也有可能出错 未安装数据库可以看看  这篇   ,检测数据库服务是否开启:浏览器打开localhost:27017 就能访问 ,然后给数据库添加nodedb

7.2K10

Excel编程周末速成班第3课:Excel对象模型

对象引用重要性 要使用对象,你需要对其进行引用。只是在代码中用于引用对象名称。有时该对象已经存在,并且你代码需要做就是获取对该对象引用。...此方法将打开指定工作簿,将其添加到Workbooks集合然后返回对该工作簿引用。...如果你不希望工作簿保存在Excel默认数据文件夹中,则名称还可以包括驱动器/或路径信息。...如果已经创建或打开了工作簿(换句话说,如果它已经存在于Workbooks集合中),则可以直接从集合引用它。因此,代码 Workbooks(Name) 返回对具有指定名称工作簿引用。...然后使用ThisWorkbook关键字确保引用适用于代码所在工作簿,而不适用于活动工作簿。 说明:ThisWorkbook关键字与工程资源浏览器中列出ThisWorkbook元素不同

5K30

在线商城项目10-基于mongoose实现商品列表查询

实现商品列表查询 step1 先建goods集合对应model 在根目录下新建一个目录models存放所有的model,新建good.js: ?...商品Id "productName": String, // 商品名 "salePrice": Number, // 售价 "checked": String, // 是否被选中...(在购物车中) "productNum": Number, // 选购数量 "productImage": String // 商品图片名称 }); // 一定要将model()方法第一个参数其返回值设置为相同值...,否则会出现不可预知结果 module.exports = mongoose.model('Good', productScheme); step2 从goods查找数据并返回 修改goods.js...总结 其实,到此,我们基本流程已经全部走通了,剩下不过是前后端逻辑丰富以及线上部署而已。我们见两个仓库改动提交。

3.8K10
领券