mongo shell 通过返回信息定位错误点
有时候我们会通过mongo shell 运行一些脚本,去执行更新或运维需求。mongo shell 可执行的代码可以实现比较复杂的功能,代码也可以比较丰富。当执行报错时,如果可以快速定位到错误点,对解决bug, 可以事半功倍。
我们先测试一下:
Case 1 简单的向集合中插入一笔数据
执行代码:
db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})
报错信息:
--16T14::51.349+ E QUERY [js] SyntaxError: illegal character @(shell):1:23
Case 2 将上面的代码包在一个 for 循环中
执行代码:
for (var i =; i<; i++){db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})}
报错信息:
--16T14::00.900+ E QUERY [js] SyntaxError: illegal character @(shell):1:48
Case 3 将Case中的代码换成两行
for (var i =;
... i<; i++){db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})}
报错信息
--16T14::54.577+ E QUERY [js] SyntaxError: illegal character @(shell):2:33
经过排错定位,错误为 “val” 中的“”是中文双引号。将至更新为英文。
Case 4
for (var i =; i<; i++){db.testdecimal.insert({"val": NumberDecimal( “9.99” )})}
报错信息:
--16T14::29.110+ E QUERY [js] SyntaxError: illegal character @(shell):1:70
再次排查,错误为 “9.99” 中的“”是中文双引号。将至更新为英文。
Case 5
for (var i =; i<; i++){db.testdecimal.insert({"val": NumberDecimal( "9.99" )})}
执行OK:
WriteResult({ "nInserted" : })
我们回头,再仔细看下。错误信息中最后的数字信息(红色标注)。
1:23 ; 1:48 ; 2:33 ; 1:70 。
其实这些数字,已经标注了,错误位于第几行,第几个字符。:(冒号)前,代表错误位于的行数;:(冒号)后,代表错误位于本行第几个字符。 但需要留意,这是在错误类型为 SyntaxError 情况下成立的。SyntaxError :代表尝试解析语法上不合法的代码的错误。当Javascript语言解析代码时,Javascript引擎发现了不符合语法规范的tokens或token顺序时抛出SyntaxError。 如果我们用一个未定义的函数或是函数名写错了或是什么样子呢? Case 6
执行代码:
db.testdecimal.find().preetty()
错误信息:
--16T15::37.501+ E QUERY [js] TypeError: db.testdecimal.find(...).preetty is not a function :
@(shell):1:1
如需将错误代码嵌套到其他语句中呢?
Case 7
执行代码:
for (var i =;
i<; i++){db.testdecimal.find().preetty()}
错误信息:
--16T15::37.532+ E QUERY [js] TypeError: db.testdecimal.find(...).preetty is not a function :
@(shell):2:11
mongo 没有 preetty()函数,只有 pretty()方法,它的作用是 使得查询出来的数据在命令行中更加美观的显示,不至于太紧凑。
我们看到此类的错误类型是 TypeError,用来表示值的类型非预期类型时发生的错误。当传入函数的操作数或参数的类型并非操作符或函数所预期的类型时,将抛出一个 TypeError 类型错误。
此类错误,抛出的数字,第一个还是错误所在的行数,而第二个就不是了,它是把后面的功能实现当成了一个点。
一句话总结:解决bug时,充分重视返回的错误信息。
本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!
mongo shell 通过返回信息定位错误点的更多相关文章
- Linux Shell 函数返回值
Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fu ...
- Spring Cloud项目中通过Feign进行内部服务调用发生401\407错误无返回信息的问题
问题描述 最近在使用Spring Cloud改造现有服务的工作中,在内部服务的调用方式上选择了Feign组件,由于服务与服务之间有权限控制,发现通过Feign来进行调用时如果发生了401.407错误时 ...
- mongo Shell初体验
mongo shell是一个MongoDB的交互式JavaScript接口.您可以使用mongo shell来查询和更新数据以及执行管理操作. 打开cmd命令行,输入mongo,就可以进入mongo ...
- Linux Shell函数返回值
转:http://blog.csdn.net/ithomer/article/details/7954577 Shell函数返回值,一般有3种方式:return,argv,echo 1) return ...
- 2.Access the mongo Shell Help-官方文档摘录
总结: 1.使用help可以查看帮助信息db.help() help等 2.查看对应的实现方法.比如 test@gzxkvm52$ db.updateUser function (name, upd ...
- 图解Mongo Shell的使用
mongo shell是一个MongoDB的交互式JavaScript接口.您可以使用mongo shell来查询和更新数据以及执行管理操作. 本篇经验将和大家介绍Mongo Shell的使用方法,希 ...
- mongo shell
mongo shell mongo 连接 本地 mongo # 连接127.0.0.1:27017 远程 mongo "mongodb://mongodb0.example.com:2801 ...
- MongoDB ServerStatus返回信息
ServerStatus返回信息 ServerStatus返回mongodb中很多信息 http://docs.mongodb.org/manual/reference/command/serverS ...
- MongoDB error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js(转)
rror: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js 一般这种情况就是:自己指定的数据库,所以不能.自动加 ...
随机推荐
- 初始CSS3 实例
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- iSensor App Kit 测试之 MT9V111 MT9M111 MT9D111
iSensor App Kit 可以调试测试一切常规的sensor,对于ccusb20底板,可以直接兼容官哥所有的dvp接口的摄像头,分辨率从30w到1400w均没问题. 今天又测试了三款sensor ...
- linux-export
使自定义普通变量转换为环境变量: 1. env查看环境变量 2. 设置临时环境变量,关机重启时不生效. export path=$path:/usr/sbin/ 3. 修改profile文件,关机重启 ...
- windows下tomcat闪退问题(启动失败)
1. 第一种情况:Java jdk环境变量没配置或配置有问题 java jdk详细的配置过程这里贴一下:https://jingyan.baidu.com/article/6dad5075d1dc40 ...
- 【CuteJavaScript】Angular6入门项目(4.改造组件和添加HTTP服务)
本文目录 一.项目起步 二.编写路由组件 三.编写页面组件 1.编写单一组件 2.模拟数据 3.编写主从组件 四.编写服务 1.为什么需要服务 2.编写服务 五.引入RxJS 1.关于RxJS 2.引 ...
- JS数据结构——队列
创建一个自己的类来表示一个队列 function Queue() { //这里写属性和方法 } 首先需要一个用于存储队列中元素的数据结构,可以用数组 let items = [] 接下来声明一些队列可 ...
- MySQL的安装、启动和基础配置 —— mac版本
安装 第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads/选择Community选项 第二步: ...
- Python:日期和时间的处理模块及相关函数
Python:日期和时间的处理模块及相关函数 Python 提供 time 模块和 calendar 模块用于格式化日期和时间. 一.时间戳 在Python中,时间戳是以秒为单位的浮点小数,它是指格林 ...
- SpringCloud-创建服务消费者-Ribbon方式(附代码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- CentOS下 安装 Nginx
官方文档:https://nginx.org/en/linux_packages.html#RHEL-CentOS 安装环境:Linux 服务器 CentOS 7.3.Root 权限 1.Instal ...