default: 任意类型或函数,为路径设置一个默认的值。如果值是一个函数,则函数的返回值用作默认值。...select: 布尔值 指定 query 的默认 projections validate: 函数,对属性添加验证函数。...error */ } ); 说完Connections,下面让我们来看一个重点Models 模型(Models) Models 是从 Schema 编译来的构造函数。...字段不存在的文档Model.find( { age: { not: { lte: 24 }}})字段相关操作符符号描述exists匹配存在指定字段的文档type返回字段属于指定类型的文档数组字段的查找符号描述...这个 document 由另一条 query 从数据库返回。
如果值为真,为此属性添加require验证器 default: 任何值或函数 设置此路径默认值,如果是函数m,函数返回值为默认值 select: 布尔值 指定query的默认projections validate...:布尔值 是否对这个属性创建索引 unique:布尔值 是否对这个属性创建唯一索引 sparse:布尔值 是否对这个属性创建稀疏索引 四、Connections-连接 可以使用 mongoose.connect...回调 connect()函数接受回调函数,或返回一个Promise keepAlive 对于长期运行的后台应用,启用毫秒级 keepAlive 是一个精明的操作。...mongoose.connect(uri,{keepAlive:120}) 五、models-模型 Models 是从 Schema 编译来的构造函数。....x 中,除了手动调用 next 函数,还可以返回一个 Promise,甚至是 async/await。
插件就像一个函数,你可以在模式中使用它,并在模式实例上一次次地重用。 Mongoose 还提供全局插件,你可以将其用于所有模式。...('Log', LogSchema) 步骤2:编写一个函数来获得 2 个 JSON 之间的差异 所以下一步是你需要一个可重用的函数,它将动态创建两个 JSON 的 diff。...isEqual:此方法支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号和类型化数组。...this.isNew():如果你正在创建新文档,那么只需返回 next()中间件。 在 schema.post('init') 的 toObject()中: doc....它将 document 转换为 Object()和transform:false是为了不允许转换返回对象。
({ name: String, author: String, isPublished: Boolean }); //使用创建集合 创建构造函数 const Course...基础', author: '一客', isPublished: true }); //将文档插入数据库中 course.save(); 通过集合构造函数方法(create)创建文档 const...({ name: String, author: String, isPublished: Boolean }); //使用创建集合 创建构造函数 const Course...默认返回当前集合中的第一条文档 // User.findOne({name: '李四'}).then(result => console.log(result)) // 查询用户集合中年龄字段大于20...message: '分类名称要在一定的范围内才可以' } }, author: { type: String, validate: { validator: v => { // 返回布尔值
创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...: String, author: String , isPub1ished: Boolean }); //3、使用规则创建集合 这里创建的集合也是一个构造函数 const Course...// 根据条件查找文档 Course.findOne({name: 'node.js基础'}).then(result => console.log(result)) // 返回文档 只返回一条,默认返回第一条...type: String, // 自定义验证器 validate: { validator: v => { // 返回布尔值
1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...: String, author: String , isPub1ished: Boolean }); //3、使用规则创建集合 这里创建的集合也是一个构造函数 const Course...// 根据条件查找文档 Course.findOne({name: 'node.js基础'}).then(result => console.log(result)) // 返回文档 只返回一条,默认返回第一条...type: String, // 自定义验证器 validate: { validator: v => { // 返回布尔值
(b=1,2) # 关键字参数写在位置参数之前会导致出错 四、小总结 定义时小括号中的参数,用来接收参数用的,称为 “形参” 调用时小括号中的参数,用来传递给函数用的,称为 “实参” 函数返回值(一)...,只有调用者拥有了这个返回值,才能够根据当前的温度做适当的调整 综上所述: 所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果 使用返回值的前提需求就是函数调用者想要在函数外使用计算结果...二、带有返回值的函数 想要在函数中把结果返回给调用者,需要在函数中使用return 如下示例: def add2num(a, b): c = a+b return c # return...,最后儿子给你冰淇淋时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存 保存函数的返回值示例如下: #定义函数 def add2num(a,...b): return a+b #调用函数,顺便保存函数的返回值 result = add2num(100,98) #因为result已经保存了add2num的返回值,所以接下来就可以使用了
1.MongoDB增删改查操作 1.1 创建集合 创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...anthor: { type: String, validate: { validator: v => { //返回布尔值...搭建网站服务器,实现客户端与服务器端的通信 连接数据库,创建用户集合,向集合中插入文档 当用户访问/list时,将所有用户信息查询出来 实现路由功能 呈现用户列表页面 从数据库中查询用户信息...当用户访问/modify时,呈现修改页面,并实现修改用户信息功能 修改用户信息分为两大步骤 1.增加页面路由 呈现页面 1.在点击修改按钮的时候 将用户ID传递到当前页面 2.从数据库中查询当前用户信息..., max: 80 }, password: String, email: String, hobbies: [String] }); //创建集合返回集合构造函数
5、mongoose验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。...第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://localhost/playground...author: { type: String, validate: { validator: v => { // 返回布尔值...({ name: { type: String } })); // 文章集合 const Post = mongoose.model('Post', new mongoose.Schema({...第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://localhost/playground
下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); const db =...mongoose.connection; db.on("error", () => { console.log("链接失败"); }); db.on("open", () => {...MySql的表结构 通过定义Schema来约束数据的类型,支持以下类型数据 类型 作用 String 定义字符串 Number 定义数字 Date 定义日期 Buffer 定义二进制 Boolean 定义布尔值...("User", userSechem); ---- 通过上面的操作就获得了表的构造函数,接下来就可以向里面进行增删改查了 增 有三种方法在表内增加数据: 通过实例化数据: 创建表数据实例化model...就会把数据存入数据库中 注意:该方法为异步方法 await user.save(); 通过Model.create方法: 通过表构造器的静态方法create自动在表中插入新的数据 该方法可以接收多个插入数据,最后的回调函数参数根据数据量决定
从代码中可以看出,监听了几个事件,并且执行触发了connected事件,这表示连接成功 connection中不止有如上几个事件,关键看你想要监听哪个事件。 ...从图中可以看到插入成功! 更新 Model.update(conditions, update, [options], [callback]) var User = require("....} else { console.log("Res:" + res); } }) } del(); 结果就不贴了,res中会返回是否成功以及影响的行数...用于模糊查询 $size 匹配数组大小 $maxDistance 范围查询,距离(基于LBS) $mod 取模运算 $near 邻域查询,查询附近的位置(基于LBS) $exists...console.log("Res:" + res); } }) } getByPager(); 分页是用得比较多的查询,分页原理用过其它数据库的都知道,分页用到的函数和
lt:5}}]}) // price不大于10且price不小于5 await col.find({$nor: [{price:{$gt:10}},{price:{$lt:5}}]}) // 元素$exists...,$type await col.insertOne({ name: "芒果", price: 20.0, stack:true }) await col.find({stack:{$exists:true...而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。...name: "苹果", price: 5 }); console.log("插入数据:", r); // 5.查询,find返回...Query,它实现了then和catch,可以当Promise使用 // 如果需要返回Promise,调用其exec() r = await Model.find({ name
apolloServerOptions: { tracing: true, // 设置为true时,以Apollo跟踪格式收集和公开跟踪数据 debug: true, // 一个布尔值...当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。...从MongoDB查询数据 安装 egg-mongoose yarn add egg-mongoose 配置 // config/plugin.ts exports.mongoose = { enable...: true, package: 'egg-mongoose', }; // config/config.default.ts exports.mongoose = { client: {...= app.mongoose; const Schema = mongoose.Schema; const UserSchema = new Schema({ open_id: String
,从指针位置开始写入数据信息; 其它文件函数: file_exists():文件是否存在 file_exists("file.txt"); (不打开文件)检测文件是否存在;参数是文件的相对或绝对地址路径...;返回布尔值 filesize():文件字节大小 filesize("file.txt"); 检测文件的字节大小,参数是文件的相对或绝对地址路径; unlink():删除文件 unlink("file.txt..."); 删除指定的文件;参数是文件的相对或绝对地址路径;返回布尔值 文件指针定位: rewind():首部 将文件指针复位到文件的首部 ftell():返回位置 将文件指针的当前位置返回 fseek()...:指定位置 将指针移动到指定的位置 int fseek( resource fp , int offset [, int whence]); fseek()函数主要的功能是将文件指针fp从whence...;主要参数有:指定文件指针,以及一个需要锁定类型的常数;返回布尔值(是否成功锁定文件);
,Nest 官方为我们提供了一个 Mongoose 的封装,我们需要安装 mongoose 和 @nestjs/mongoose: npm install mongoose @nestjs/mongoose...user_name: string; readonly password: string; } 我们打开 user.service.ts 文件,为 UserService 类添加一个构造函数...操作数据库其实是异步的,所以这里我们使用 async 函数来处理异步的过程。...user_name:this.data.inputValue1_find, }, success: function(res) { // 请求成功,处理从服务器返回的数据...//localhost:3000/user/users', method: 'GET', success: function(res) { // 请求成功,处理从服务器返回的数据
异步生成器函数与异步函数和生成器函数的不同之处在于,它们不返回 promise 或迭代器,而是返回一个异步迭代器。...你可以将异步迭代器视为 iterator,其 next() 函数始终会返回 promise。...你的第一个异步生成器函数 异步生成器函数的行为类似于生成器函数:生成器函数返回一个具有 next() 函数的对象,调用 next() 将执行生成器函数直到下一个 yield。...不同之处在于异步迭代器的 next() 函数返回了一个 promise。 下面是带有异步生成器功能的 “Hello, World” 例子。...'use strict'; const mongoose = require('mongoose'); async function* run() { await mongoose.connect
这样可以很容易地找到故障的来源以及如何将其从整个系统中隔离出来,从而降低维护成本和缩短维护时间。...它包含的函数可以被其他服务使用,因为与其在服务中构建这些函数,不如直接根据需要导入它们,保持代码整洁并加快开发速度。...,它包含了处理不同错误条件的函数。...服务实现了应用程序的逻辑,并在向控制器返回必要的响应之前与数据库发生通信。我们创建了一个简单的认证服务文件,其中包含我们的登录和注册逻辑。...路由接收一个请求,将其转发到控制器,然后控制器将其转发到数据库,并向控制器返回一个报告。
接下来,我们使用 getTodos() 函数来获取数据,它接收 req 和 res 参数并返回 promise。...在前面创建的 Todo 模块的帮助下,我们现在可以从 MongoDB 获取数据并返回 Todo 数组。...: ITodo } 这里, ITodo 接口需要跟 API 返回的数据类型一样。这里没有 mongoose , 所以需要加一些额外的属性来匹配 API 定义的数据类型。...} catch (error) { throw new Error(error) } } 我们需要导入 axios,通过 api 来请求数据,然后,用 getTodos() 函数从服务端获取数据...getTodos() 方法会返回 promise —— 因此,我们可以调用 then 函数并用获取到的数据更新 state,或者在发生任何错误时抛出一个错误。
话不多说,先上代码: const mongoose = require('mongoose') const config = require('....= connectMongoDB(config.database.mongo) module.exports = { mongoInstance } 这套连接方法能够满足以下需求,当然,这也是从我的服务需要满足的需求中总结而来的...: 开发环境下能够打印详细的数据库操作信息 与数据库断开连接后,所有涉及到数据库读写操作的命令均会立即返回错误,而不会等待重连进而造成接口超时 服务启动并成功与数据库建立连接后,如果数据库出现问题造成连接中断...核心意思就是将 bufferMaxEntries 设为 0 同时将 bufferCommands 设为 false,可以让驱动在未连接到数据库的时候,操作立即返回失败,而不是一直在等待重连。...解决方法也不是没有,就是比较鸡肋:在 mongoose 连接的 'error' 事件监听回调函数中尝试重连。但是需要设置最大重试次数,否则会发生内存泄露。
,如没找到则返回FALSE 3、该函数区分大小写,如果想要不区分大小写,请使用 stristr() 4、如果你仅仅想确定needle是否存在于haystack中请使用速度更快、耗费内存更少的strpos...PHP 5.3.0 起 var_dump($no_con); //如果没找到,则返回布尔值 FALSE ?...needle 在 haystack 中首次出现的数字位置 3、该函数区分大小写,如果想要不区分大小写,请使用 stripos() 4、返回值,如找到的话,返回needle 存在于 haystack 字符串起始的位置...(注意字符串位置是从0开始,而不是从1开始),没找到则返回FALSE,但也可能返回等同于 FALSE 的非布尔值 <?...2、strripos(),计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写) 总结:注意这几个函数如果没找到时则会返回FALSE,故在判断两边是否相等时候(if),注意两边的类型,以上几个函数
领取专属 10元无门槛券
手把手带您无忧上云