1、在Nodejs与mongoose中常用做法为,当程序开始执行时就打开数据库连接,并且保持到程序结束 mongoose的auto_reconnect与disconnect作用
2、路由如何实现模块化划分 express.Router()可以返回一个路由句柄,该句柄可挂在到app.use中,即可实现模块化路由(大路由/子路由)
3、mongoose中Schema的static静态方法等价于java中service层对dao层的封装 疑问:静态方法与每个实例对象的方法之间的区别(mongoose中Schema的prototype与static之间的区别)
4、如何在node中使用es6
balel-register模块:将node的入口文件引入后,通过babel对es6转化为es5
http://cnodejs.org/topic/56460e0d89b4b49902e7fbd3
babel6 = balel-core + 插件(
babel-preset-es2015, babel-preset-stage3,
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-plugin-transform-es2015-classes": "^6.24.1",
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
"babel-plugin-transform-export-extensions": "^6.22.0"
)
5、es6模块化语法注意事项
- import有两种引入方式,一种是引入export default的默认导出,此时不需要使用import {} from 的形式,另一种是引入模块中明确的接口即import {}
- export default方式导出时不需要声明与赋值,非default方式导出时必须写明__变量声明与赋值__(例如export const hehe = 'hehe',缺少=或者const声明都是错误的)
- await与async如何解决回调问题
- es6类与继承写法练习
- promise写法练习
- 静态方法与实例方法区别
- 完成article的crud接口
- 为express添加body-parser中间件来提供请求体解析与urlencode(encode与decode)
-
article接口改为restful形式(参考公司文档)
-
添加superior来保证对服务器文件变化的实时更新
-
为article接口添加单元测试(chai,mocha)
- describe表示一个测试套件,代表一个测试任务
- it表示一个测试用例,表示测试内容的最小单位,describe内部至少有一个it
- 完成article接口单元测试
- __mocha测试mongoose__链接数据库基本操作注意事项:
- 首先需要保证mongoose链接数据库成功
- 链接成功后,必须在每个实体的crud测试中,引入mongoose生成schame与model,否则
- 前段对接crud接口完成
- 接口返回状态,成功20X,重定向相关30X,客户端错误40X,服务端错误50x
- 添加dev与pro两种环境控制 app.js中通过process.env.NODE_ENV获取传入的环境名,默认之后为'development' 命令如下:
- linux & mac: export NODE_ENV=production
- windows: set NODE_ENV=production dev: 使用本地mongodb数据库ip,端口号为12345 pro: 使用127.0.0.1,端口号为27017
- 添加制定port运行方式
app.js中通过process.env.PORT获取命令行中指定的端口号
命令如下:PORT=1234 node index.js
- 时model引入报错提示:model中缺少function原因,ES6模块化与commonJS不可以混用,可能会出现__导入导出时内容莫名被过滤的__奇怪的情况(应该追一下源码查看原因)
- 每次测试时必须打开新的mongoose链接(mongoose.connect)
- 通过express.router()生成的实例实现模块化路由
- 通过express().use(router)收集所有模块化路由,实现路由合并
- 安装jsonwebtoken模块与morgn(log request to console)
- 配置文件中新增secret项:used when we create and verify JSON Web Tokens
- 认证接口前缀为/api/authenticate/,主要为用户数据相关操作,后期要将认证与USER逻辑分离
- 非认证接口均已/api/为前缀,api后的第一个单词为__表名__
- nginx负载均衡的其他接口格式待定
- 全部查询需要文章与用户表关联查询,用于首页基本展示
- 根据用户id查询文章列表用于个人中心用户编辑查看
- 后端如果在每次请求中获取请求用户的信息 方案1: 将用户id作为token一部分,每次获取验证token正确性时可以将用户id解析出来,达到获取用户id的目的,然后使用id查询用户信息
- 安装multer模块用于文件上传
- 生成文件名后,将图片url存入数据库
- mongoose如何关联查询 注:所有model之间连接都是通过ObjectId进行,ref所在字段有与对应model中的_id关联
- jwt验证改用UserId做加密
- 添加connect-history-api-fallback中间件,保证react单页应用使用h5 history刷新时无404状态
- nginx配置重定向直接将路径返回至前端: 默认index开头的url表示跳转页面,nginx对index匹配的路径进行重定向,通过index与ajax请求区分开,从而防止前端访问服务器404问题 location /index/ { try_files $uri /index.html; }
jenkins