首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你真的了解mongoose吗?

为了让各位小伙伴快速上手,加深对于 mongoose 的了解,我特地结合之前的项目整理了一下关于 mongoose 的一些基础知识,这些对于实战都是很有用的。...,以及字符串和数字的特殊字符。...lowercase: 布尔值,是否在保存前对此值调用toLowerCase() uppercase: 布尔值,是否在保存前对此值调用toUpperCase() trim: 布尔值,是否在保存前对此值调用...trim() match: 正则,创建一个验证器,验证值是否匹配给定的正则表达式 enum: 数组,创建一个验证器,验证值是否是给定数组中的元素 数字 min: 数字,创建一个验证器,验证值是否大于等于给定的最小值...建议不需要 mongoose 特殊处理就返给前端的数据都最好使用该方法转成普通 js 对象。

41.6K30

JS 的6个不良编码习惯,现在就改掉吧!

这些都是不良编码习惯的征兆。 在这篇文章中,我描述了JavaScript中常见的6种不良编码习惯。重要的是,本文还给出一些可行的建议,如何的摆脱这些坏习惯。...最佳实践列表: 始终使用严格的相等运算符 ===进行比较 不要使用松散等式运算符 == 加法运算符 operand1+operand2:两个操作数应该是数字或字符串(这里我在给前端写接口时候,使用过一个字符串...+对象,错误记忆犹新,一个错误返回'字符串内容'[object],提醒大家一下) 算术运算符 -*/%**:两个操作数都应该是数字 if(condition){...}, while(condition...变量、对象属性和数组在使用前必须用值初始化 JS 提供了很多避免与 undefined进行比较方式。...一些有用的编码风格的例子: Airbnb JS 风格指南 谷歌 JS 风格指南 老实说,当我在回家前准备提交时,我可能会忘记设计代码的样式。

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    分享一些对你有帮助的JavaScript技巧

    JS-Tips 控制台提示 代码执行时间⏲️ 使用 console.time 和 console.timeEnd 来确定你的代码有多快(或多慢)?...它有独特的语法,字符串必须用回车键包围。模板字符串可以包含动态值的占位符。这些值由美元符号和大括号(${expression})标记。...在我的很多项目中,我都看到它们多次出现。 从一个数组中获取一个随机项目。...在浅层合并中,第一个对象的属性会被覆盖到与第二个对象相同的属性值。 对于深合并,请使用类似于:_merge of lodash。 ---- 解构 将数组元素和对象属性分解为变量的技术称为,反结构。...我们可以通过这些属性和方法从浏览器的URL中获取协议、主机、端口、域名等信息。 我发现非常有用的属性之一是, window.location.search 搜索属性从位置URL中返回查询字符串。

    1.2K20

    大话 JavaScript(Speaking JavaScript):第一章到第五章

    您可以将它们用于局部变量而不会破坏任何东西,但您的代码仍然会变得混乱。 值 JavaScript 有许多我们从编程语言中期望的值:布尔值、数字、字符串、数组等等。...原始值与对象 JavaScript 在值之间做了一个相当武断的区分: 原始值是布尔值、数字、字符串、null和undefined。 所有其他值都是对象。...同样,-Infinity小于任何其他数字(除了NaN)。这使得这些数字在作为默认值时非常有用(例如,当你正在寻找最小值或最大值时)。...JavaScript 还有位操作的运算符(例如,位与;参见位运算符)。 字符串 字符串可以直接通过字符串字面量创建。这些字面量由单引号或双引号括起来。反斜杠(\)转义字符并产生一些控制字符。...JavaScript 正在获得更好的构建工具(例如Grunt)和测试工具(例如mocha)。Node.js 使得可以通过 shell 运行这些类型的工具(不仅仅在浏览器中)。

    37510

    前端面试题---JS部分

    ②所有的这些工作只需要执行一次,比如只需要显示一个时间。...2. js事件循环 js代码执行过程中会有很多任务,这些任务总的分成两类: 同步任务 异步任务 需要注意的是除了同步任务和异步任务,任务还可以更加细分为macrotask(宏任务)和microtask...变量提升的表现是,在变量或函数声明之前访问变量或调用函数而不会报错。 原因 JavaScript引擎在代码执行前有一个解析的过程(预编译),创建执行上线文,初始化一些代码执行时需要用到的对象。...总结 解析和预编译过程中的声明提升可以提高性能,让函数可以在执行时预先为变量分配栈空间 声明提升还可以提高JS代码的容错性,使一些不规范的代码也可以正常执行 函数是一等公民,当函数声明与变量声明冲突时...而是继续执行下面的操作 对于写程序,同步往往会阻塞,没有数据过来,我就等着,异步则不会阻塞,没数据来我干别的事,有数据来去处理这些数据。

    76020

    JavaScript 权威指南第七版(GPT 重译)(一)

    例如,JavaScript 中的if/else语句在布尔值为true时执行一个操作,在值为false时执行另一个操作。通常将直接创建布尔值的比较与使用它的语句结合在一起。...我尽量避免使用null和undefined,但如果需要将这些值分配给变量或属性,或者将这些值传递给函数或从函数中返回这些值,我通常使用null。...3.8 不可变的原始值和可变的对象引用 JavaScript 中原始值(undefined、null、布尔值、数字和字符串)和对象(包括数组和函数)之间有一个根本的区别。...特殊情况的操作符转换 操作符在第四章中有详细介绍。在这里,我们解释一下那些不使用前述基本对象到字符串和对象到数字转换的特殊情况操作符。 JavaScript 中的+运算符执行数字加法和字符串连接。...3.11 总结 本章需要记住的一些关键点: 如何在 JavaScript 中编写和操作数字和文本字符串。

    91910

    如何处理 JavaScript 比较中的临界情况

    ; 首先,我将引用 ?文档 中的规则。在以上代码的第 6 行,比较了一个基本类型值和一个非基本类型值。在这种情况下,采用规则 №11 。该算法的结果是一个空字符串。...; } 明确的比较有时反倒会带来不必要的麻烦。 在第二个 if 子句中,我们将数组和布尔值做了比较。你可能认为该操作的结果应当为布尔值 true,但并非如此。严格相等性比较也有同样的效果。...比较一个数组和一个布尔值会引起许多临界情况。在我们看例子之前,我要给你个提示:永远不要对布尔值(true 和 false)使用双等于号。...; 首个 if 子句是自解释的,所以我不会费时赘述。一如之前的例子,我引用了 ?文档 中的规则。当其中一个被比较的值是非基本类型时,比较数组和布尔值会调用 ?...如果不能启用隐式强制转换,又只能对布尔值(true 和 false)使用双等号,那就应该 改为三等号。 总结 大多数临界情况都能通过重构代码得以避免。

    1.8K30

    js基础(一)

    js的编写位置: 标签的属性中(不推荐) 可以将js代码编写到标签的onclick属性中。当我们点击按钮时,才会执行!...可以将js代码写在超链接的href属性中,点击超链接时,会执行js代码 script标签中。 编写到外部js文件中,然后引入。...基本语法 js严格区分大小写 js中每条语句以分号结尾 js会自动忽略多个空格和换行 概念: 字面量,一些不可改变的值,都可以直接使用(一般不会直接使用,比较麻烦)2r7325291ur 变量,...在字符串中,可以使用 \ 作为转义字符,当输出一些特殊符号需要转义时使用。 模板字符串: 用于拼接字符串和变量。 内容拼接变量时,用 ${} 包住变量。...三、转化为其他进制 在js中,如果需要表示16进制数字,需要以0x开头。 如果需要表示8进制数字,则以0开头。 徐耀表示2进制数字,则以0b开头。

    1.9K20

    周百万下载量的 NPM 包可执行任意 JS 代码,数十万网站可能受影响!

    大家好,我是 ConardLi。 最近 Codean Labs 对外披露了 PDF.js 的一个任意代码执行漏洞(CVE-2024-4367)。...); // 返回一个新的 Function 对象,该对象接受 "c" 和 "size" 作为参数,并执行 jsBuf 中连接的代码 return (this.compiledGlyphs...这非常有趣:如果我们能够以某种方式控制进入 Function 对象主体的这些 cmds 并插入我们自己的代码,那么一旦渲染这样的字形,它就会被执行。...代码显然假定它是一个数字数组,但情况总是这样吗?这个数组中的任何字符串都会被直接插入,周围没有任何引号。因此,这在最好的情况下会破坏 JavaScript 语法,在最坏的情况下会导致任意代码执行。...让我们尝试插入一个字符串类型的值而不是数字(在 PDF 中,字符串由括号分隔): /FontMatrix [1 2 3 4 5 (foobar)] 成功了!

    43210

    分享一些你可能不知道的但却很有帮助的JavaScript小技巧

    JS-Tips 控制台提示 代码执行时间⏲️ 使用 console.time 和 console.timeEnd 来确定你的代码有多快(或多慢)?...它有独特的语法,字符串必须用回车键包围。模板字符串可以包含动态值的占位符。这些值由美元符号和大括号(${expression})标记。...合并对象 注意,spread操作符和Object.assign都是执行浅层合并。在浅层合并中,第一个对象的属性会被覆盖到与第二个对象相同的属性值。...对象 和数组一样,我们也可以对对象进行重构。...我们可以通过这些属性和方法从浏览器的URL中获取协议、主机、端口、域名等信息。 我发现非常有用的属性之一是, window.location.search 搜索属性从位置URL中返回查询字符串。

    1.1K50

    翻译 | 玩转 React 表单 —— 受控组件详解

    placeholder:作为占位文本的字符串,用来填充第一个 标签。本组件中,我们将第一个选项的值设置成空字符串(参看下面代码的第 10 行)。...setName:一个字符串,用以填充每个单选或复选框的 name 属性值。 options:一个由字符串元素组成的数组,数组元素用以渲染每个单选框或复选框的值和 label 的内容。...如果 item 不在数组中,返回 -1,因此,我们写了 > -1。 注意,0 是一个合法的索引值,所以我们需要 > -1 ,否则代码会有 bug。...清除表单子组件中显示的数据很简单,只要把容器的 state (译注:这里是指 state 对象上挂载的各个变量)设置成空数组和空字符串就可以了(如果有数字输入框的话则是将值设置成 0)。...2. handleFormSubmit 为了提交表单数据,我们从 state 中抽取需要提交的属性值,创建了一个对象。接着使用 AJAX 库或技术将这些数据发送给 API(本文不包含此类内容)。

    11.4K100

    js 的5个不良编码习惯,现在就改掉吧

    在这篇文章中,我描述了JavaScript中常见的5种不良编码习惯。重要的是,本文会给出一些可行的建议,如何的摆脱摆脱这些习惯。...最佳实践列表: 始终使用严格的相等运算符===进行比较 不要使用松散等式运算符== 加法运算符 operand1 + operand2:两个操作数应该是数字或字符串 算术运算符 - * /%**:两个操作数都应该是数字...变量、对象属性和数组在使用前必须用值初始化 JS 提供了很多避免与undefined进行比较方式。...一些有用的编码风格的例子: Airbnb JS 风格指南 谷歌 JS 风格指南 老实说,当我在回家前准备提交时,我可能会忘记设计代码的样式。...找出复杂的代码,并使用最新 JS 特性来重构。 整个代码库的一致编码风格有益于可读性。良好的编程技能总是一个双赢的解决方案。

    85730

    5 个 JS 不良编码习惯,你占几个呢

    代码使用了很多 JavaScript 技巧? 命名和编码风格太过随意? 这些都是不良编码习惯的征兆。 在这篇文章中,我描述了JavaScript中常见的5种不良编码习惯。...最佳实践列表: 始终使用严格的相等运算符===进行比较 不要使用松散等式运算符== 加法运算符 operand1 + operand2:两个操作数应该是数字或字符串 算术运算符 - * /%**:两个操作数都应该是数字...变量、对象属性和数组在使用前必须用值初始化 JS 提供了很多避免与undefined进行比较方式。...一些有用的编码风格的例子: Airbnb JS 风格指南 谷歌 JS 风格指南 老实说,当我在回家前准备提交时,我可能会忘记设计代码的样式。...找出复杂的代码,并使用最新 JS 特性来重构。 整个代码库的一致编码风格有益于可读性。良好的编程技能总是一个双赢的解决方案。

    55050

    分享 8 个关于高级前端的 JavaScript 面试题

    因此,在今天这篇文章中,我们将会看到一些重要的 JavaScript 面试问题的深入解释。我的目标是彻底解释这些面试问题,以便我们能够理解基本概念,并希望在面试中解决其他类似问题。...这些对象中的每一个都有一个原型,用作对另一个对象的引用。__proto__ 属性只是对此原型对象的引用。当原始对象不具备属性和方法时,原型对象用作属性和方法的后备源。...JavaScript 如何处理对象到原始值(例如字符串、数字或布尔值)的转换。...当您使用字符串以外的任何值(例如数字、对象或符号)作为对象中的键时,JavaScript 会在将该值用作键之前在内部将该值转换为其字符串表示形式。...基于这个条件,如果其中一个操作数是对象,我们必须将其转换为原始值。这就是 ToPrimitive 算法发挥作用的地方。我们需要将 [] x 转换为原始值。数组是 JavaScript 中的对象。

    55830

    JavaScript(基础)

    : 字符串 --> 数字 如果字符串是一个合法的数字,则直接转换为对应的数字 如果字符串是一个非法的数字,则转换为NaN 如果是一个空串或纯空格的字符串,则转换为0 布尔值 --> 数字 true...任何值和字符串做加法,都会先转换为字符串,然后再拼串 # 一元运算符 一元运算符只需要一个操作数 一元的 + 就是正号,不会对值产生任何影响,但是可以将一个非数字转换为数字 例子: var a = true...函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码 使用typeof检查一个函数时会返回function # 创建函数 # 函数声明 function 函数名([形参1,形参2...形参...数组使用索引(index)来操作元素 索引指由0开始的整数 # 数组的操作 # 创建数组 var arr = new Array(); var arr = []; 1 2 复制 # 向数组中添加元素...value:正在遍历的元素 index:正在遍历元素的索引 obj:被遍历对象 ---- # 包装类 在JS中为我们提供了三个包装类: String() Boolean() Number() 通过这三个包装类可以创建基本数据类型的对象

    1.4K10

    JavaWeb03-轻松理解JS(Java真正的全栈开发)

    Ø Boolean对象描述 在 js中,布尔值是一种基本的数据类型。...否则设置为 true(即使 value 参数是字符串 "false")。 2.Number Ø Number对象描述 在 js中,数字是一种基本的数据类型。...需要注意的是,js的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。...eval执行函数 eval() 将函数参数字符串,当成js程序执行 二.函数 创建函数 在ECMAScript中函数有以下几种创建方式 第一种: function 函数名称(参数列表){ 函数体; }...有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

    1.4K120

    ES7和ES8新特性介绍

    概述 JavaScript,作为一门处于高速发展期的开发语言,正在变的越来越完善、稳定。我们必须拥抱这些变化,并且我们需要把ES8加入到我们的技术栈中。...它是一个替代indexOf,开发人员用来检查数组中是否存在值,indexOf是一种尴尬的使用,因为它返回一个元素在数组中的位置或者-1当这样的元素不能被找到的情况下。...所以它返回一个数字,而不是一个布尔值(开发人员需要实施额外的检查)。...在ES6,要检查是否存在值,你需要做一些判断,因为他们没有匹配到值,Array.prototype.indexOf返回-1变成了true(转换成true),但是当匹配的元素为0位置时候,该数组包含元素,...padStart()在开始部位填充,返回一个给出长度的字符串,填充物给定字符串,把字符串填充到期望的长度。一个经典例子是使用空格创建列,使用它,可以帮助我们格式化一些字符串。

    5.5K60

    ES7、ES8新特性

    概述 JavaScript,作为一门处于高速发展期的开发语言,正在变的越来越完善、稳定。我们必须拥抱这些变化,并且我们需要把ES8加入到我们的技术栈中。...它是一个替代indexOf,开发人员用来检查数组中是否存在值,indexOf是一种尴尬的使用,因为它返回一个元素在数组中的位置或者-1当这样的元素不能被找到的情况下。...所以它返回一个数字,而不是一个布尔值(开发人员需要实施额外的检查)。...在ES6,要检查是否存在值,你需要做一些判断,因为他们没有匹配到值,Array.prototype.indexOf返回-1变成了true(转换成true),但是当匹配的元素为0位置时候,该数组包含元素,...padStart()在开始部位填充,返回一个给出长度的字符串,填充物给定字符串,把字符串填充到期望的长度。一个经典例子是使用空格创建列,使用它,可以帮助我们格式化一些字符串。

    3.5K50

    2022秋招前端面试题(九)(附答案)

    "+" 操作符,如果有一个为字符串,那么都转化到字符串然后执行字符串拼接"-" 操作符,转换为数字,相减 (-a, a * 1 a/1) 都能进行隐式强制类型转换[] + {} 和 {} + []复制代码布尔值到数字...1 + true = 21 + false = 1转换为布尔值for 中第二个whileif三元表达式|| (逻辑或) && (逻辑与)左边的操作数符号不能被转换为数字能被转换为布尔值(都是 true)...可以被转换成字符串 "Symbol(cool)"宽松相等和严格相等宽松相等允许进行强制类型转换,而严格相等不允许字符串与数字转换为数字然后比较其他类型与布尔类型先把布尔类型转换为数字,然后继续进行比较对象与非对象执行对象的...new操作符的实现步骤如下:创建一个对象将构造函数的作用域赋给新对象(也就是将对象的proto属性指向构造函数的prototype属性)指向构造函数中的代码,构造函数中的this指向该对象(也就是为这个对象添加属性和方法...返回值:一个新的、由通过测试的元素组成的数组,如果没有任何数组元素通过测试,则返回空数组。

    2.6K30
    领券