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

深入浅出mongodb(一)

年轻时注意到,每做十件事有九件不成功,于是就十倍地去努力干下去。...,我们需要创建 data 文件夹,然后再 data 文件夹里创建 db 文件,之后再去执行启动服务端命令,因为 mongodb 默认读取 D 盘文件下 data 如果没有就会出现闪退情况。...更多文档参考https://mongoosejs.com/docs/schematypes.html[5] ?有人可能为什么 ObjectId 可以做唯一标识符呢,不会重复吗?...,callback中第一个参数永远是错误信息,第二个参数是正确信息。...第二种写法是返回promise 上述定义 model 方法是通过 model 类创建,还有一种创建 model 方法是通过实例创建,这个创建出来是一个操作对象,代表是一个单个文档只能操作自己。

3.9K10

前方高能,与“程序崩溃第一次邂逅!

有时在思考,到底教了一帮什么样学森!!! 循环索引 在我们循环模块里面,有这样这个功能,一般很多人都会忽略掉它存在。——循环索引 这个功能是让程序从0开始自动读取索引内容。...而当我们学习了“阵列”后,可能你遇到第一个“崩溃情况产生。这个就跟我们没学到“根号”前,只认识“π”这样一个无限不循环小数是一个道理。...因为阵列模块学习,是机器人编程第二次能力进阶——数据库能力。(第一次是学会使用变量) 当程序崩溃时候,首先要先思考: 为什么它会崩溃?...一般情况下,如果程序是编写思路上错误,只不过造成实际运行情况达不到要求,程序本身仍然是可以执行。 但程序一旦崩溃,证明里面的数据读取,出现了严重错误。 即,数据结构出错了。...阵列长度 上面这个程序崩溃,是因为, 当我们使用“循环索引”功能时,阵列自动按照“0/1/2/3……”这样顺序读取阵列数据。

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

你好,欢迎访问我博客

可能是因为一个vue同事离职了,所以那管理系统项目没做完,就让先用bootstrap写个响应式商城页面了,终于让用熟悉模式做网页了,信心又慢慢地回来了。...实习结束了,也没完全搞明白Vue 和 React ,只知道怎样构建项目,简单写写页面。...三、为什么这个博客网站 实习时有个同事,她有自己博客网站,当时就想搞一个自己个人博客,然后问了她博客是怎么做后,自己也去百度云买了个虚拟空间、看了下WordPress官网,经过几天摸索和百度,...因为WordPress是用PHP写那时只知道一点node相关技术,所以我用WordPress搭建出来博客网站,只是在上面写写文章,就想着在CSDN这样网站上面写文章,感觉被搜索出来几率更大得多...、音乐)上传,fs 模块读取上传文件和错误日记输出,nodemailer 模块做邮件发送。

42430

Node.js 搭建一个 API 接口服务(实战)

为什么要用node 最主要一点是其他语言咱也不会啊。。。 ?...Typescript 网上特别多关于“为什么要用Typescript开发”,“Typescript开发好处和坏处”,“为什么不用Typescript开发”等等争论和文章,有兴趣同学也可以去说道说道哈...js中没有的东西,譬如泛型接口抽象等等 良好模块管理 强类型语音,个人感觉比js开发服务端项目更合适 有良好错误提示机制,可以避免很多开发阶段低级错误 约束开发习惯,使得代码更优雅规范 最后记住一点...不过这个项目除了使用mysql,也还有用到mongo,接下来看看mongodb怎么用 使用mongoose作为mongodb中间件 // mongoose入口 import mongoose from...我们通过一个简单埋点接口来实现一下,首先需要分析埋点工具实现逻辑: 因为埋点信息都是非关系型,所以使用mongodb来存储埋点信息 因为这个就是一个单纯记录接口,所以需要设计比较通用 - 即除了关键几个字段

7.2K31

三步带你开发一个短链接生成平台

,虽不影响微信长按扫码,一旦二维码尺寸缩一点点,图片马上就会糊掉,导致摄像头直接扫码难以识别。...现在市面上可用就是微博t.cn和一些第三方生成短链接工具,但这两类工具都有一些使用上问题,例如:t.cn现在规则是会出现一个中转页不会直接跳转,而第三方工具因为是一个公共平台,有时可能因一些不良信息导致整个平台无法访问...为了高效,这使用是node和mongodb,下面我们就来开始动手吧。...: 在这个应用中,我们使用了mongodb,之所以选择它是因为执行高效且低开销,所以执行起来也很高效,不过如果使用其他数据库也是没问题。...因为这个应用我们只有生成和Redirect两个功能,所以这里只有两个页面即可完成所有工作。

3.1K30

Mongoose学习参考文档

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

24.1K90

关于 Node.js 认证方面的教程(很可能)是有误

不幸是,这教程实际上并不帮助我们,因为它没使用凭证,但是当我们在这里时,我们很快注意到凭据存储中错误: 我们将 以明文形式将 JWT 密钥存储在存储库中。 我们将使用对称密码存储密码。...不知道为什么选择这个特别的模式,但是单一选择让密文具有延展性。 让我们回到 Google,接着寻找下一个教程。...好吧,我们会给出一个简短凭证教程,但这并不能帮助只是拷贝开发者。因为更有趣是,这个教程将这个 mongoose User 对象序列化到 JWT 中。...现在,任何一个包括存储在 Mongoose 模型甚至过期令牌都有你密码。鉴于这个来自HTTP,可以把它从线上找出来。 下一个教程怎么样呢?...身份验证是困难 相信这些有错误教程开发人员辩解说,“这只是为了解释基础!没有人会在生产中这样做!”但是,再三强调了这是多么错误

4.5K90

React、TypeScript、NodeJS 和 MongoDB 搭建 Todo App

因为默认情况下,这个应用程序会使用 JavaScript。 在 NodeJS 应用程序中有两种使用 TypeScript 方法,要么在项目中本地安装使用,要么在电脑中全局安装使用。...接下来,使用类型转换来避免拼写错误,并限制 body 变量与 ITodo 类型匹配,然后基于该模块创建一个新 Todo。...因为我们已经创建了函数,所以唯一要做就是导入这些方法并将它们作为参数传递。 到目前为止,我们已经谈了很多,但是仍然没有启动服务器。所以,我们在下一节中解决这个问题。...就是说,现在如果我们能成功连接 MongoDB,服务器就会启动,否则,抛出错误。 我们现在已经通过 Node、Express、TypeScript 和 MongoDB 完成 api 构建。...这里,我们需要去掉 _id 属性因为 MongoDB 自动生成。

16.9K30

别再用MongoDB了!

近日,他在个人博客上发表了一篇博文《为什么你应该永远、永远、永远不要再使用MongoDB》。...在文中,他列举了如下理由: 丢失数据(见1、2); 默认忽略错误,假设每次写入都是成功,在32位系统上,这可能导致数据无声无息地丢失; 即使是在MongoDB宣传适用场景下,其性能依然不高(见...如果项目涉及用户账户或者两条记录之间存在某种关系,那么就应该使用关系型数据库,而不是文档存储;如果项目在使用Mongoose,那么也应该使用关系型数据库,因为Mongoose只是使用文档存储模拟了有模式关系型数据库...这个问题随处可见,而且已经存在多年。 网友toyg则评论说: 最近首次使用了MongoDB,是在一个内部项目里。...认为,没有模式确实显著了提升了开发速度……现在项目已经成熟,回过头来,可以看到为什么关系型数据库更合适,但如果从开始就使用RDBMS,那么可能无法这么快地完成迁移。

95720

Koa2+MongoDB+JWT实战--Restful API最佳实践

本篇文章是结合最近一个项目,基于koa+mongodb+jwt来给大家讲述一下 RESTful API 最佳实践。 RESTful API 是什么?...拿到路由分配任务并执行 在 koa 中是一个中间件 为什么要用控制器 获取 HTTP 请求参数 Query String,如?...,都要发回这个 JSON 对象。...服务器完全只靠这个对象认证用户身份。为了防止用户篡改数据,服务器在生成这个对象时候,会加上签名。 服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。...); mongoose.connection.on("error", console.error); 用户 CRUD 项目中模块是比较多不会一一去演示,因为各个模块实质性内容是大同小异

9.1K42

mongoose 更新修改数据: findOneAndUpdate 使用

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 简单使用 就是如此,希望对大家有所帮助。

5.5K30

从一个优秀开源项目来谈前端架构

记得掘金上有人写过一篇文章:《在一个小公司,把我们公司前端给架构了》 , (当时还看成《把我们公司架构师给上了》) 面试过很多人,从小公司出来(也是从一个很小很小公司出来,现在也没在什么...SpaceX-API 是一个用于火箭、核心舱、太空舱、发射台和发射数据开源 REST API(并且是使用Node.js编写,我们用这个项目借鉴无可厚非) 为了阅读舒适度,把下面的正文尽量口语化一点...和devDependencies字段(项目的依赖,区分线上依赖和开发依赖,本人是非常看中这个点,SpaceX-API也符合观念,严格区分依赖按照) "main": "server.js",...至于这个麻烦,这就不解释了(一定要有能看到默认值,而不是去靠猜) 对于监听端口启动服务以后一些异常统一捕获,并且统一日志记录,process进程退出,防止出现僵死线程、端口占用等(因为node部署时候可能会用...,例如鉴权、错误处理、日志等为公共模块(中间件,前端可能是一个工具函数或组件) 多考虑错误异常处理,前端也是如此,js大多错误发生来源于a.b.c这种代码(如果a.b为undefined那么就会报错了

2.3K20

Node.js 服务连接 MongoDB 处理最佳实践

关于如何处理 node.js 服务连接 MongoDB,查阅了大量中英文资料,发现并没有太适合所期望能力方案,因此经过一番官方文档研究,总结了以下连接 MongoDB 方法(使用目前 Node.js...: 开发环境下能够打印详细数据库操作信息 与数据库断开连接后,所有涉及到数据库读写操作命令均会立即返回错误,而不会等待重连进而造成接口超时 服务启动并成功与数据库建立连接后,如果数据库出现问题造成连接中断...如果非高级用户,就不要去改变这个参数了。 见注释 D。对于 MongoDB 连接池问题,建议是不要去手动处理。...mongoose 自己维护一个默认最大数量为 5 连接池,只有当你发现有一些慢查询可能阻塞快查询时才应该考虑增大 poolSize。...当然,这个数字不能设置得过大,MongoDB 默认是一个连接启动一个线程来服务,连接太多线程数切换系统开销很大。

3.4K20

Node使用火焰图优化CPU爆涨

因为使用局限性不是Linux,第一步apt install linux-tools-common都安不上,如果还要跑在虚拟机什么上面是不是太麻烦了,方案一卒。...可是仔细一看好像不是那么一回事,因为项目用是egg框架,火焰图里全部信息都是egg启动东西啊,长达五分钟接口压测,一点都没有体现在火焰图上,一拍脑袋,想起来用node --prof形式收集到性能数据都是...优化 回到问题上来,看到mongoose Document问题,7月2号到7月3号后,为什么突然导致CPU暴涨恍然大悟,自己之前review代码,看着代码没问题,但是忽略了这一个版本因为业务调整导致查询压力大大增加...,可能是过去好几倍这个问题。...但这次故障也让对诸如mongoos这样ODM在使用时需要更加小心谨慎,他给我们带来了无限便利同时,可能也因为一些额外操作,让我们服务承受额外负担,正常情况下这一点性能差距不易察觉,然而到了高峰期

2.6K40

Node.js中关注点分离

通过遵循关注点分离原则,你可以确保最终系统是稳定和可维护。 关注点分离原则确保了组件不会重复,从而使系统更加容易维护和重构。 关注点分离原则认为,业务逻辑应该与控制器分离。...为什么项目架构如此重要 如前所述,好项目架构非常重要,而混乱架构可能造成问题。下面是好架构一些好处。 使代码更具可读性和整洁性。 更容易避免重复代码。 更容易扩展和修改。...在构建这个应用程序过程中,我们将实现一个可扩展项目结构,并了解实现这个功能需要做些什么。 创建项目文件夹 我们应用程序将按照以下方式组织结构。...这个功能可以用来验证用户在注册或登录时输入电子邮件是否遵循正确格式。...准确显示错误信息是非常重要因为这有助于 API 用户和开发人员了解问题根源。

5.9K40

Week14-服务端选型:磨刀不如砍柴功

/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...,且在新增(外键关联主键没有值得时候)会有错误提示,删除主键表时候,关联主键内容也删掉。

1.9K30

使用 ServerLess, Nodejs, MongoDB Atlas cloud 构建 REST API

集群创建 现在,开始跟随脚步,让我们在 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

2.8K20

使用node+express+mongodb实现用户注册、登录和验证功能

,27017是你数据库端口号,mongodb不需要打开数据库可视化工具,根据名字就自动创建这个数据库名了 const mongoose = require('mongoose') // 链接数据库 mongoose.connect...useNewUrlParser:true }) 在你server.js写一点路由,测试数据库是否链接成功,启动服务的话,你可以全局安装nodemon ,然后通过在命令控制台出入nodemon server.js就可以,实时更新我们修改代码...注册功能 首先建立模型,在models.js建立对应模型,这里因为是登录和注册,就写两个字段就行,如果需要,可以自行添加对应字段名,unique表示用户名是唯一,不让重复添加 const UserSchema...安装加密bcryptjs依赖包,这个和bcrypt原理是一样,如果第bcrypt安装不成功,就是要bcryptjs安装就行,用法 一样 cnpm install bcryptjs --save 然后直接对模型进行修改就行...,如果正确就返回,不正确的话也是返回状态码和错误信息,最后一步就是生成token,返回客户端,客户端可以通过token判断是哪个用户。

2.9K20
领券