Travis CI
在GitHub上,可以显示这样的小图标
这样的图标可以通过 travis-ci 和codecov来实现,并且是免费的,你可以跟随以下步骤完成图标的展示。
注册github账号
进入github注册账号后,按照提示,新建一个可用的项目
授权
想要使用travis-ci和codecov,必须拿到github的授权,授权方式为:
登录网站 https://travis-ci.com/ 和 https://codecov.io,然后分别使用GitHub账号登录,跟着提示操作,授权即可
添加项目
在travis-ci添加你想要构建的项目,步骤如下
点击头像进入settings页面
添加你想要构建的项目
如果你还想进行其他配置,可以点击Settings进入配置页面操作
增加 .travis.yml文件
在刚建的项目内新建文件 .travis.yml,.travis.yml文件的作用就是在代码提交的时候travis-ci会根据该配置文件执行配置的任务
常用的配置
language: node_js // 指定编程语言
sudo: false // 如果指定为false,则运行于默认的Ubuntu14.04上。也可以通过设置 sudo:enable 来自己指定运行环境
branches: // 指定构建的分支
only: // 指定构建的分支
- master
except: // 过滤构建分支
- develop
node_js: // 指定node_js的版本
- '8'
- '9'
before_install
- xx
install: // 下载构建依赖
- npm i
before_script
-xx
script: // 执行命令
- npm run test
after_script:
- npm install codecov && codecov // 执行codecov,会自动去https://codecov.io测试覆盖率
使用环境变量
点击more options进入设置页面
在此设置环境变量
环境变量在.travis.yml使用
....
script
- npm run test ${variable} // 以${xx}来使用
....
展示图标
此上步骤已完成项目的构建,但是想要显示小图标还得需要如下配置
在项目的README.md文件中加入如下内容
[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][codecov-image]][codecov-url]
name:为github账户名,使用自己的用户名替代
project:为项目名,使用自己的项目替代
[npm-image]: https://img.shields.io/npm/v/${project}.svg?style=flat-square
[npm-url]: https://npmjs.org/package/${project}
[travis-image]: https://img.shields.io/travis/${name}/${project}.svg
[travis-url]: https://travis-ci.org/${name}/${project}
[codecov-image]: https://img.shields.io/codecov/c/github/${name}/${project}.svg?style=flat-square
[codecov-url]: https://codecov.io/github/${name}/${project}?branch=master
将修改后的内容推到你的github仓库,过一会你就能看到小图标啦
Mongodb
find
find查找字段为Array类型的数据,使用Mongodb版本 4.0.1
find({"key.key":xx})
// 对比
find({
key:{
$elemMatch:{key:xx}
}
})
有如下数据
{
"_id" : ObjectId("5bab4584b142f592ccc7fdfe"),
"age" : [
{
"s" : 18,
"e" : 30
},
{
"s" : 50,
"e" : 70
}
]
}
find({
'age.s':{$lt:45},
'age.s':{$gt:45}
}) //这样的查询字段为 18-70都会被匹配到
find({
age:{
$elemMatch:{
s:{$lt:45},
e:{$gt:45}
}
}
}) // 这样的话匹配不到任何数据 只有满足 18-30或50-70才会匹配
结论:
- find({“key.key”:xx}):如果数组存在多个元素,那么会使用数组整体来比较,数组中任何字段满足,则结果为true
- find(key:{KaTeX parse error: Expected 'EOF', got '}' at position 13: elemMatch:{}}̲):如果使用elemMatch操作符,那么数组比较是按照分组来比较,只有数组中单个数据满足(而不是整体满足)则结果为true