在学习B站项目Vue+node.js 全栈项目-资金管理系统带权限-------附源码_哔哩哔哩_bilibili中,产生了一些疑问。我的习惯是白天保证学习进度,并记录产生的问题;晚上再将这些问题一一解决。
一.目录
- require("./config/passport")(passport);怎么把变量传入被导入的模块?
- model("users") 为什么只要一个字符串参数?
- passport 和 passport-jwt 详细流转结构?
二. Q&A
1. require("xxx")(param);
写法,是怎么把变量传入被导入的模块的?
stateDiagram-v2 知识点
Node.js --> Node.js模块
Node.js模块 --> Node.js_require模块
Question:
遇到一种写法如下图,目的是将之前导入的 passport 对象传到./config/passport.js
文件夹下。
Answer:
首先,之所以能将passport
作为一个参数传入文件./config/passport.js
中,是因为我们在./config/passport.js
是这样定义module.exports
的:
./config/passport.js
文件导出的是一个函数(只不过简写为箭头函数的形式),要求传入一个形参。因此我们在外部文件中可以将passport
传进去。同时将这整个./config/passport.js
导入到主文件。
2.model("users")
为什么只要一个字符串参数?
stateDiagram-v2 知识点
Node.js --> mongoose
MongoDB --> mongoose
mongoose --> Mongoose.prototype.model()
Question:
关于mongoose.model()
的用法?
Answer:
在Mongoose API docs Mongoose-model()中是这么描述的:“参数带schema
就创建,只有name
就检索这个collection”
PS: mongoose 中文 API 文档竟然比英文 API 文档少Mongoose
一部分。
3.JWT中间件 passport 和 jwt 策略passport-jwt 的具体流转?
stateDiagram-v2 知识点
Node.js --> Web开发
Web开发 --> passport
passport --> passport_jwt
passport_jwt --> options,一个对象,控制如何从请求中提取或验证令牌的选项
passport_jwt --> verify,一个回调函数,返回