代码如下: const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:81192/lets-go-brandon...('error',()=>{ console.log('***数据库连接失败***') }); db.on('open',()=>{ console.log('***数据库连接成功**...type":{ type:String, default:"LineString", }, coordinates:[[Number...之前的学习笔记: 百度地图结合ECharts实现复杂覆盖物(Overlay) 百度地图叠加three.js 百度地图的MapVGL 添加自定义模型图层(ThreeJS) 百度地图Mapvgl-线轨迹图层 [转自...CSDN]echarts + 百度地图 飞线 [转CSDN]百度地图自定义标注 百度地图Polyline画直线 百度地图样式1,样式2 百度地图嵌入vue 百度地图散点图
: String, age: Number, email: String, password: String, hobbies: [String] }); // 使用规则创建集合 const...(err, '数据库连接失败')); // 创建集合规则 const userSchema = new mongoose.Schema({ name: String, age: Number, email...(err, '数据库连接失败')); // 创建集合规则 const userSchema = new mongoose.Schema({ name: String, age: Number, email...'], // // 字符串的最大长度 maxlength: [5, '文章长度最大不能超过5'], // // 去除字符串两边的空格 trim: true }, age: { type: Number...// true 验证成功 // false 验证失败 // v 要验证的值 return v && v.length > 4 }, // 自定义错误信息 message: '传入的值不符合验证规则
#Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...("error",function (error) { console.log("数据库连接失败:" + error); }); db.connection.on("open",function...有点像构造函数的样子 let personSchema= new Schema({ name: String, sex: String, age: Number }); 基本属性类型有...age: Number }); let personModel= mongoose.model('person', personSchema); let personEntity = new personModel...console.log(person); }else{ console.log('保存失败!') } }) ?
同理,在 double 类型强制转换为 int 时,也会出现数据精度丢失(数据丢失),如下代码所示。...---- 1.3 类型转换小结 关于 Java 的数据类型转换,同学们需要理解以下三点: 大转小:强制类型转换,如下: int a = 6; byte b = (byte) a; 提示:对于 byte...(long i = 0; i < MAX_NUMBER; i ++) { sum += i; } long end = System.currentTimeMillis...(Long i = 0L; i < MAX_NUMBER; i ++) { sum += i; } Long end = System.currentTimeMillis...---- 三、课时小结 在本节课时中,讲解了低转高、高转低的 Java 基本类型转换,接着学习了包装类的概念,再引申出自动装箱、自动拆箱的概念,最后分别进行了性能测试。
(err => console.log(err, '数据库连接失败')); // 创建集合规则 const userSchema = new mongoose.Schema({ name: String..., age: Number, email: String, password: String, hobbies: [String] }); // 使用规则创建集合 const...即删除所有文档 User.deleteMany({}).then(result => console.log(result)) // 更新单个 User.updateOne({查询条件}, {要修改的值}....catch(err => console.log(err, '数据库连接失败')); // 创建集合规则 const userSchema = new mongoose.Schema({...name: String, age: Number, email: String, password: String, hobbies: [String] });
预定义修饰符 1. lowercase 转小写 2. uppercase 转大写 3. trim 去掉前后空格 2. 自定义修饰符 1. set 设置数据,会将修饰过的数据处理入库。...trim: true }, pic: String, redirect: { type: String, // 自定义设置数据,parmas为当前的值...} return parmas } } }, status: { type: Number...get(params){ return "姓名:" + params } }, age:{ type:Number,...get(params){ return "年龄:"+ params; } }, status:{ type:Number
5、mongoose验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。....then(() => console.log('数据库连接成功')) // 连接失败 .catch(err => console.log(err, '数据库连接失败')); const...maxlength: [5, '文章长度最大不能超过5'], // 去除字符串两边的空格 trim: true }, age: { type: Number...// true 验证成功 // false 验证失败 // v 要验证的值...(err => console.log(err, '数据库连接失败')); // 用户集合规则 const userSchema = new mongoose.Schema({ name: {
同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档... db.connection.on("error", function (error) { console.log("数据库连接失败:" + error); }); db.connection.on... : { type:String },//属性name,类型为String age : { type:Number, default:0 },//属性age,类型为Number,默认为0 time ...创建集合 基于前面的内容,接下来我们就开始学习对数据的具体操作了,下面是关于一些基础数据的定义,相信对于你来说已经不陌生了,请在仔细温习一遍吧!... var TestSchema = new mongoose.Schema({ name : { type:String }, age : { type:Number, default
• MongoDB 对于 32 位系统支持不佳,所以 3.2 版本以后没有再对 32 位系统的支持。...5、如果启动失败,证明上边的操作有误,在控制台输入 sc delete MongoDB 删除之前配置的服务,然后从第一步再来一次。...function() {}); // 数据库连接断开的事件 5、断开连接(一般不需要调用) mongoose.disconnect(); 对于 MongoDB 数据库。... 属性值 toJSON() - 转换为一个 JSON 对象 toObject() 该 Document 对象的方法很常用... = mongoose.Schema; var stuSchema = new Schema({ name: String, age: Number, gender: {
引言 继上篇文章「Koa2+MongoDB+JWT实战--Restful API最佳实践」后,收到许多小伙伴的反馈,表示自己对于mongoose不怎么了解,上手感觉有些难度,看官方文档又基本都是英文(宝宝心里苦...为了让各位小伙伴快速上手,加深对于 mongoose 的了解,我特地结合之前的项目整理了一下关于 mongoose 的一些基础知识,这些对于实战都是很有用的。...在 mongoose 中有效的 SchemaTypes 有: String Number Date Buffer Boolean Mixed ObjectId Array Decimal128 Map...如果连接失败,尝试用127.0.0.1代替localhost。...看一下官方对于findOne与findById的对比: 不同之处在于处理 id 为 undefined 时的情况。
., {$project:{name:1,price:1,_id:0}}]).toArray(); // 聚合管道操作符:$add,$avg,$sum等 // 按name字段分组,统计组内price总和...fruitsColl.aggregate([{ $group:{_id:"$name",total: {$sum:"$price"}}}]).toArray(); ODM - Mongoose 对于mongo...; const conn = mongoose.connection; conn.on("error", () => console.error("连接数据库失败")); conn.once("open...: true }); const conn = mongoose.connection; conn.on("error", () => console.error("连接数据库失败")); conn.once...: [{ body: String, date: Date }], // 定义对象数组 date: { type: Date, default: Date.now }, // 指定默认值
类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转数字,对象转布尔值等) 一、类型转换的分类 类型转换可以分为隐式类型转换和显式类型转换。...;由于 + 运算符的其中一个操作数是字符串,所以是字符串拼接操作,结果是数字 42 被强制类型转换为相应的字符串”42“。...而 String() 则是将 a 显示强制类型转换为字符串。 严格相等运算符(===)不会触发类型隐式转换,所以它可以用来比较值和类型是否都相等。..."41,2,3" 如果你对于答案有疑问的话,请看解析: 对于第一行代码来说,触发特点一,所以将数字 1 转换为字符串,得到结果 '11' 对于第二行代码来说,触发特点二,所以将 true 转为数字 1...就是判断两者类型和值是否相同 三、18 种常见情况解析 1、常见情况 true + false // 1 '+' 运算符会触发 number 类型转换对于 true 和 false 2、常见情况
Number, name: String, bookIds: [{ type: Number, ref: 'Books' }] }); AuthorSchema.index({ authorId...4.5.0 之后增加了虚拟值填充[3],以便实现文档中更复杂的一些关系。...const AuthorSchema = new Schema({ authorId: Number, name: String, bookIds: [{ type: Number, ref...另外一种是 Mongoose 提供的 populate 方法,这种方式写起来,代码会更简洁些,这里需要注意如果关联的字段是非 _id 字段,一定要在 Schema 中设置虚拟值填充,否则 populate...关联时会失败。
验证 在创建集合规则时,可以设置当前字段的验证规则,验证失败则插入失败。... maxlength: [6, '标题长度不能大于6个字符'], trim: true //去除字符串两边空格 }, age: { type: Number...没有插入信息时默认显示的值 default: Date.now }, category: { type: String, // 枚举,列出当前字段可拥有的值... // true验证成功 // false验证失败 // v 要验证的值 return...true }).then(() => { console.log('数据库连接成功'); }).catch((error) => { console.log(error, '数据库连接失败
collection相当于关系型数据库中的表 document相当于一条数据,在这里有特别需要注意的一点是: collection不要求文档有相同的结构,在一个collection文档中不必具有相同的fileds,对于单个...test: { type: String } // `test` is a path of type string }); 除了type属性,还可以对这个字段路径指定其它属性,比如在保存之前全部转换为小写...如果值为真,为此属性添加require验证器 default: 任何值或函数 设置此路径默认值,如果是函数m,函数返回值为默认值 select: 布尔值 指定query的默认projections validate...是否对这个属性创建索引 unique:布尔值 是否对这个属性创建唯一索引 sparse:布尔值 是否对这个属性创建稀疏索引 四、Connections-连接 可以使用 mongoose.connect...回调 connect()函数接受回调函数,或返回一个Promise keepAlive 对于长期运行的后台应用,启用毫秒级 keepAlive 是一个精明的操作。
第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://localhost/playground...', { useNewUrlParser: true}) // 连接成功 .then(() => console.log('数据库连接成功')) // 连接失败 .catch...(err => console.log(err, '数据库连接失败')); // 创建集合规则 const userSchema = new mongoose.Schema({ name: String..., age: Number, email: String, password: String, hobbies: [String] }); // 使用规则创建集合 const...// 1.User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result)) // 2.查询用户集合中hobbies字段值包含足球的文档
const userSchema = new mongoose.Schema({ name: String, age: Number }); userSchema.index({ name...coordinates: [Number] }); const placeSchema = new mongoose.Schema({ location: locationSchema...({ title: 'text', content: 'text' }); 唯一索引(Unique Index): 确保集合中每个文档的索引字段值都是唯一的。...这对于防止重复数据和维护数据完整性非常有用。...; 稀疏索引(Sparse Index): 仅为具有索引字段非空值的文档创建索引条目。
= require('mongoose'); // 连接数据库 mongoose.connect('mongodb://localhost/playground', { useNewUrlParser...useUnifiedTopology: true }) .then(() => console.log('数据库连接成功')) .catch((error) => console.log(error, '数据库连接失败...')); 3.创建数据库集合 const mongoose = require('mongoose'); // 创建学生集合规则 const studentsSchema = new mongoose.Schema... required: true, minlength: 2, maxlength: 10 }, age: { type: Number.../model/user'); // 导入系统模块querystring 用于将HTTP参数转换为对象格式 const querystring = require('querystring'); //
3.说说什么是 显式强制类型转换 和 隐式强制类型转换?谈谈你对于二者的看法 4.将一个变量强制转换为字符串,你能说几种方法? 5.通常的两种转字符串的方法: String(a) 和 a+""。...在这段代码中,解析器遇到{}后将其解析为了一个空的代码块,而又将"+[]"解析为对于空数组的一元操作“+”,也就是将数组强制转换为数字,而空数组转换为数字的话就是0,那么最后结果自然就是0了。...谈谈你对于二者的看法 显式强制类型转换是通过显而易见的、目的明确的代码将数据进行强制类型转换,如Number()就是将变量显式的强制转换为数字类型的值。...对于基本类型的话: true → 1 false → 0 undefined → NaN null → 0 对于字符串,遵循常量的相关规则语法,如果转化失败就返回NaN 对于对象来说: 会先进行去原始值操作...ToPrimitive,即先检查该值是否有valueOf()方法,如果有并且返回的基本类型值,就使用该值进行转强制类型转换。
字符串中包含的数字字面量会被正确转换为数字,因此字符串 "0xA "会被正确转换为数字10。不过,字符串 "22.5 "将被转换成22,因为对于整数来说,小数点是无效字符。...用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。...用Number()进行强制类型转换, "4.5.6 "将返回NaN,因为整个字符串值不能转换成数字。...()) NaN Number(100) 100 最后一种强制类型转换方法String()是最简单的,因为它可把任何值转换成字符串。...要执行这种强制类型转换,只需要调用作为参数传递进来的值的toString()方法,即把1转换成 "1 ",把true转换成 "true ",把false转换成 "false ",依此类推。
领取专属 10元无门槛券
手把手带您无忧上云