我年轻时注意到,我每做十件事有九件不成功,于是我就十倍地去努力干下去。...,我们需要创建 data 文件夹,然后再 data 文件夹里创建 db 文件,之后再去执行启动服务端的命令,因为 mongodb 默认读取 D 盘的文件下的 data 如果没有就会出现闪退的情况。...更多的文档参考https://mongoosejs.com/docs/schematypes.html[5] ?有人可能会问为什么 ObjectId 可以做唯一标识符呢,不会重复吗?...,callback中的第一个参数永远是错误信息,第二个参数是正确信息。...第二种写法是返回promise 上述定义 model 的方法是通过 model 类创建的,还有一种创建 model 的方法是通过实例创建,这个创建出来的是一个操作对象,代表是一个单个文档只能操作自己。
可截至 UTC 时间 10:00,该公司向用户表示“仍在努力解决这个问题”——又一次持续数小时的中断。...而我们在要求该聊天机器人进行自我诊断时,它简短回应称出现了“内部服务器错误”。 社交媒体上也很快出现了相关内容。...一位用户抱怨 ChatGPT 反复发生中断和崩溃,表示“真的太烦人了,服务根本无法使用。” 另一位用户则评论称,“OpenAI 突然停工导致让很多新手汗流浃背了吧,因为他们的活干不下去了。”...那些在编程工作中使用聊天机器人建议的开发者,更是首当其冲受到影响。有人评论称,“是谁搞垮了 OpenAI?我还有代码没写完呢。” 只是昨天宕机的还不止是 ChatGPT。...既然大家都说数据是现代企业的命脉,为什么却仍没有得到妥善管理?”
可能是因为一个会vue同事离职了,所以那管理系统项目没做完,就让我先用bootstrap写个响应式商城页面了,终于让用熟悉的模式做网页了,信心又慢慢地回来了。...实习结束了,我也没完全搞明白Vue 和 React ,只知道怎样构建项目,会简单写写页面。...三、为什么做这个博客网站 实习时有个同事,她有自己的博客网站,当时就想搞一个自己的个人博客,然后问了她的博客是怎么做的后,自己也去百度云买了个虚拟空间、看了下WordPress官网,经过几天摸索和百度,...因为WordPress是用的PHP写的,我那时只知道一点node相关的技术,所以我用WordPress搭建出来的博客网站,只是在上面写写文章,就想着在CSDN这样的网站上面写文章,感觉被搜索出来的几率更大得多...、音乐)上传,fs 模块读取上传的文件和错误日记的输出,nodemailer 模块做的邮件的发送。
有时我在思考,我到底教了一帮什么样的学森!!! 循环索引 在我们的循环模块里面,有这样这个功能,一般很多人都会忽略掉它的存在。——循环索引 这个功能是让程序从0开始自动读取索引的内容。...而当我们学习了“阵列”后,可能你会遇到第一个“崩溃”的情况产生。这个就跟我们没学到“根号”前,只认识“π”这样一个无限不循环小数是一个道理。...因为阵列模块的学习,是机器人编程的第二次能力进阶——数据库能力。(第一次是学会使用变量) 当程序崩溃的时候,首先要先思考: 为什么它会崩溃?...一般情况下,如果程序是编写思路上的错误,只不过会造成实际运行情况达不到要求,程序本身仍然是可以执行的。 但程序一旦崩溃,证明里面的数据读取,出现了严重错误。 即,数据结构出错了。...阵列长度 上面这个程序会崩溃,是因为, 当我们使用“循环索引”功能时,阵列会自动按照“0/1/2/3……”这样的顺序读取阵列数据。
为什么要用node 最主要的一点是其他语言咱也不会啊。。。 ?...Typescript 网上特别多关于“为什么要用Typescript开发”,“Typescript开发的好处和坏处”,“为什么不用Typescript开发”等等的争论和文章,有兴趣的同学也可以去说道说道哈...js中没有的东西,譬如泛型接口抽象等等 良好的模块管理 强类型语音,个人感觉比js开发服务端项目更合适 有良好的错误提示机制,可以避免很多开发阶段的低级错误 约束开发习惯,使得代码更优雅规范 最后记住一点...不过这个项目除了使用mysql,也还有用到mongo,接下来看看mongodb怎么用 使用mongoose作为mongodb的中间件 // mongoose入口 import mongoose from...我们通过一个简单的埋点接口来实现一下,首先需要分析埋点工具实现的逻辑: 因为埋点信息都是非关系型的,所以使用mongodb来存储埋点信息 因为这个就是一个单纯的记录接口,所以需要设计的比较通用 - 即除了关键几个字段
,虽不影响微信长按扫码,一旦二维码尺寸缩一点点,图片马上就会糊掉,导致摄像头直接扫码会难以识别。...现在市面上可用的就是微博的t.cn和一些第三方的生成短链接工具,但这两类工具都有一些使用上的问题,例如:t.cn现在的规则是会出现一个中转页不会直接跳转,而第三方的工具因为是一个公共平台,有时可能会因一些不良信息导致整个平台无法访问...为了高效,我这使用的是node和mongodb,下面我们就来开始动手吧。...: 在这个应用中,我们使用了mongodb,之所以选择它是因为执行高效且低开销,所以执行起来也很高效,不过如果使用其他数据库也是没问题的。...因为这个应用我们只有生成和Redirect两个功能,所以这里只有两个页面即可完成所有工作。
Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性...,每个Schema都会默认配置这个属性,属性名为_id,除非自己定义,方可覆盖 var mongoose = require('mongoose'); var ObjectId = mongoose.Schema.Types.ObjectId...具体怎么存入都是由Mongoose和MongoDB自己决定,当然,这个属性你也可以去除 new Schema({...}...,但不能更新主键,这就是为什么要删除主键的原因。 ...验证是异步递归的,如果你的SubDoc验证失败,Document也将无法保存 验证并不关心错误类型,而通过ValidationError这个对象可以访问 7.1 验证器 required 非空验证 min
不幸的是,这教程实际上并不帮助我们,因为它没使用凭证,但是当我们在这里时,我们会很快注意到凭据存储中的错误: 我们将 以明文形式将 JWT 密钥存储在存储库中。 我们将使用对称密码存储密码。...我不知道为什么选择这个特别的模式,但是单一的选择让密文具有延展性。 让我们回到 Google,接着寻找下一个教程。...好吧,我们会给出一个简短的凭证教程,但这并不能帮助只是拷贝的开发者。因为更有趣的是,这个教程将这个 mongoose User 对象序列化到 JWT 中。...现在,任何一个包括存储在 Mongoose 模型甚至过期的令牌都有你的密码。鉴于这个来自HTTP,我可以把它从线上找出来。 下一个教程怎么样呢?...身份验证是困难的 我相信这些有错误的教程开发人员会辩解说,“这只是为了解释基础!没有人会在生产中这样做的!”但是,我再三强调了这是多么错误。
近日,他在个人博客上发表了一篇博文《为什么你应该永远、永远、永远不要再使用MongoDB》。...在文中,他列举了如下理由: 丢失数据(见1、2); 默认忽略错误,假设每次写入都是成功的,在32位系统上,这可能会导致数据无声无息地丢失; 即使是在MongoDB宣传的适用场景下,其性能依然不高(见...如果项目涉及用户账户或者两条记录之间存在某种关系,那么就应该使用关系型数据库,而不是文档存储;如果项目在使用Mongoose,那么也应该使用关系型数据库,因为Mongoose只是使用文档存储模拟了有模式的关系型数据库...这个问题随处可见,而且已经存在多年。 网友toyg则评论说: 我最近首次使用了MongoDB,是在一个内部项目里。...我认为,没有模式确实显著了提升了开发速度……现在项目已经成熟,回过头来,我可以看到为什么关系型数据库会更合适,但如果我从开始就使用RDBMS,那么我可能无法这么快地完成迁移。
因为默认情况下,这个应用程序会使用 JavaScript。 在 NodeJS 应用程序中有两种使用 TypeScript 的方法,要么在项目中本地安装使用,要么在电脑中全局安装使用。...接下来,我使用类型转换来避免拼写错误,并限制 body 变量与 ITodo 类型匹配,然后基于该模块创建一个新的 Todo。...因为我们已经创建了函数,所以唯一要做的就是导入这些方法并将它们作为参数传递。 到目前为止,我们已经谈了很多,但是仍然没有启动服务器。所以,我们在下一节中解决这个问题。...就是说,现在如果我们能成功连接 MongoDB,服务器就会启动,否则,会抛出错误。 我们现在已经通过 Node、Express、TypeScript 和 MongoDB 完成 api 的构建。...这里,我们需要去掉 _id 属性因为 MongoDB 会自动生成。
本篇文章是结合我最近的一个项目,基于koa+mongodb+jwt来给大家讲述一下 RESTful API 的最佳实践。 RESTful API 是什么?...拿到路由分配的任务并执行 在 koa 中是一个中间件 为什么要用控制器 获取 HTTP 请求参数 Query String,如?...,都要发回这个 JSON 对象。...服务器完全只靠这个对象认证用户身份。为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名。 服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。...); mongoose.connection.on("error", console.error); 用户的 CRUD 项目中的模块是比较多的,我不会一一去演示,因为各个模块实质性的内容是大同小异的
捕获所有异常 你可能怀疑为什么类型4错误应该是你的应用程序中最常见的错误之一,因为如果让异常自由地冒泡,它们可能会一直冒泡到最顶层而没有在其他地方被捕获,导致应用程序崩溃。...应用程序可以简单地让错误继续冒泡,最终在这里被捕获,错误消息会被展示出来,然后应用程序会以错误代码退出。 你可能还记得我之前提到过,捕获所有异常是一种不好的做法。然而,这里正是我所做的!...原因是在这个级别我们确实不能让任何异常到达Python层面,因为我们不希望这个程序崩溃,所以这是唯一一个捕获所有异常有意义的情况。这是一个例外,证明了规则。...正如你之前看到的,Flask会捕获所有错误,因此你的应用程序不会因为漏捕错误而崩溃。...生产环境与开发环境中的错误处理 我提到过,尽可能将错误处理逻辑移动到应用程序调用栈的更高层次有一个好处,那就是你的应用程序代码可以让这些错误自然冒泡而不必显式捕获它们,从而使代码更易于维护和阅读。
,并定义这个collection里的文档构成 语法: const shcema = mongoose.Schema({}) 允许使用的Schematypes有: String Boolean Date...不这么做你可能会经常 收到看似毫无原因的 “connection closed” 错误。...Mongoose会自动找到名称是model的名字的复数形式。..._id); }) 异步 Post 钩子 如果你给 post 钩子的回调函数传入两个参数,mongoose 会认为第二个参数是 next()函数,可以通过 next 触发下一个中间件 schema.post...但是我们有特殊的 post 中间件技巧处理这个问题 —— 错误处理中渐渐,它可以在出错后执行你指定的代码。 错误处理中间件比普通中间件多一个 error 参数,并且 err 作为第一个参数传入。
mongoose的更新数据操作: findOneAndUpdate 前言 正文 基本语法 示例 结束语 前言 在使用mongoose操作mongodb数据库时,会遇到最基本的增删改查这四个额操作,相比起来这四个操作里..., ’ 改 ’ 这个操作是最复杂的,我也用花了点时间研究了一下 findOneAndUpdate 的简单使用,接下来给大家讲解一下。...未查找到相关数据') console.log(data) } else if(data){ console.log('修改数据成功') console.log(data) } }) 我来稍微讲解一下这个例子...所以我们在set中设置了将我们查询到的数据的price改为10 第三个参数options,因为简单使用没用到,我就只给了个空对象 第四个参数callback, if(err) 是用于判断数据库是否发生错误...好了 mongoose中修改数据的操作命令 findOneAndUpdate 的简单使用 就是如此,希望对大家有所帮助。
我记得掘金上有人写过一篇文章:《我在一个小公司,我把我们公司前端给架构了》 , (我当时还看成《我把我们公司架构师给上了》) 我面试过很多人,从小公司出来(我也是从一个很小很小的公司出来,现在也没在什么...SpaceX-API 是一个用于火箭、核心舱、太空舱、发射台和发射数据的开源 REST API(并且是使用Node.js编写,我们用这个项目借鉴无可厚非) 为了阅读的舒适度,我把下面的正文尽量口语化一点...和devDependencies字段(项目的依赖,区分线上依赖和开发依赖,我本人是非常看中这个点,SpaceX-API也符合我的观念,严格的区分依赖按照) "main": "server.js",...至于这个麻烦,我这就不解释了(一定要有能看到的默认值,而不是去靠猜) 对于监听端口启动服务以后一些异常统一捕获,并且统一日志记录,process进程退出,防止出现僵死线程、端口占用等(因为node部署时候可能会用...,例如鉴权、错误处理、日志等为公共模块(中间件,前端可能是一个工具函数或组件) 多考虑错误异常的处理,前端也是如此,js大多错误发生来源于a.b.c这种代码(如果a.b为undefined那么就会报错了
因为使用的局限性不是Linux的我,第一步apt install linux-tools-common都安不上,如果还要跑在虚拟机什么的上面是不是太麻烦了,方案一卒。...可是仔细一看好像不是那么一回事,因为项目用的是egg框架,火焰图里的全部信息都是egg启动的东西啊,我长达五分钟的接口压测,一点都没有体现在火焰图上,一拍脑袋,想起来我用node --prof的形式收集到的性能数据都是...优化 回到问题上来,看到mongoose Document的问题,7月2号到7月3号后,为什么会突然导致CPU暴涨恍然大悟,自己之前review代码,看着代码没问题,但是忽略了这一个版本因为业务调整导致查询压力大大增加...,可能是过去的好几倍这个问题。...但这次故障也让我对诸如mongoos这样的ODM在使用时需要更加小心谨慎,他给我们带来了无限的便利的同时,可能也会因为一些额外的操作,让我们的服务承受额外的负担,正常情况下这一点性能差距不易察觉,然而到了高峰期
通过遵循关注点分离原则,你可以确保最终的系统是稳定和可维护的。 关注点分离的原则确保了组件不会重复,从而使系统更加容易维护和重构。 关注点分离原则认为,业务逻辑应该与控制器分离。...为什么好的项目架构如此重要 如前所述,好的项目架构非常重要,而混乱的架构可能会造成问题。下面是好的架构的一些好处。 使代码更具可读性和整洁性。 更容易避免重复代码。 更容易扩展和修改。...在构建这个应用程序的过程中,我们将实现一个可扩展的项目结构,并了解实现这个功能需要做些什么。 创建项目文件夹 我们的应用程序将按照以下的方式组织结构。...这个功能可以用来验证用户在注册或登录时输入的电子邮件是否遵循正确的格式。...准确显示错误信息是非常重要的,因为这有助于 API 用户和开发人员了解问题的根源。
关于如何处理 node.js 服务连接 MongoDB,我查阅了大量中英文资料,发现并没有太适合我所期望的能力的方案,因此经过一番官方文档的研究,总结了以下的连接 MongoDB 的方法(使用目前 Node.js...: 开发环境下能够打印详细的数据库操作信息 与数据库断开连接后,所有涉及到数据库读写操作的命令均会立即返回错误,而不会等待重连进而造成接口超时 服务启动并成功与数据库建立连接后,如果数据库出现问题造成连接中断...如果非高级用户,就不要去改变这个参数了。 见注释 D。对于 MongoDB 连接池的问题,建议是不要去手动处理。...mongoose 自己会维护一个默认最大数量为 5 的连接池,只有当你发现有一些慢查询可能阻塞快查询时才应该考虑增大 poolSize。...当然,这个数字不能设置得过大,MongoDB 默认是一个连接启动一个线程来服务,连接太多线程数切换系统开销会很大。
/usr/local/etc/redis.conf的方式启动redis, 然后出现报错: 接着查找错误,原因为配置错误,没有深究下去。...如图显示这个版本是5.0.8的,也就是说我之前电脑上其实是有redis的,我新安装的这个6.0.9的并没有用上。...然后,我继续查看目录,发现我之前安装的5.0.8的版本,其实在 /usr/local/redis-5.0.8下面,而且我不是使用的brew安装的 因此,我又把刚刚安装的redis删除: brew...http-errors:错误页处理 express cookie-parse:只要经过这个中间件处理,我们纠结可以非常轻松的使用req.cookie()去访问所有cookie morgan:记录access...,且在新增(外键关联的主键没有值得时候)会有错误提示,删除主键表的时候,关联的主键内容也会删掉。
集群创建 现在,开始跟随我的脚步,让我们在 5 分钟之内快速创建一个 MongoDB Cluster 已不再是难事了。...证明我们的集群创建、链接都是成功的,但是有时候你可能会遇到以下错误 Error: querySrv ENODATA _mongodb...._tcp.cluster0-on1ek.mongodb.net 以上正是我在链接 MongoDB Alats 过程中遇到的问题,这里再多提下,希望能对你有帮助,因为这花费了我很长时间,尝试使用 Google...来搜索,但并没有找到好的解决方案,通过报错大致确认可能是网络和 DNS 的问题,修改 DNS 之后还是没有结果,后来我切换了网络,这个问题解决了。。。...这个错误是因为你已经定义了一个 Schema,之后又重复定义该 Scheme 导致的,错误代码如下所示: module.exports = mongoose.model('Books', BooksSchema
领取专属 10元无门槛券
手把手带您无忧上云