【发布时间】:2019-09-03 12:30:22
【问题描述】:
我有这样的功能(在 Node.js/Firebase 中),想知道如何以 JSDoc 格式添加文档:
exports.getUserRes = functions.https.onRequest(async (request, response) => {...}
如何将 GET/POST/etc 参数记录到request?
【问题讨论】:
我有这样的功能(在 Node.js/Firebase 中),想知道如何以 JSDoc 格式添加文档:
exports.getUserRes = functions.https.onRequest(async (request, response) => {...}
如何将 GET/POST/etc 参数记录到request?
【问题讨论】:
我结合How to annotate Express middlewares with JSDoc?中的其他答案并修改了一些代码,
它可以包括在express.Request 和事件自定义请求正文中定义的所有方法/属性。
它不仅可以在request.body中使用,还可以在req.query中使用。
那是因为express.Request 支持泛型,所以我们可以在 JSDOC 中使用它。
首先,记得安装@types/express和npm install --save-dev @types/express。
其次,设置如下代码。
// @ts-check
/**
* @typedef {object} showRequestBody
* @property {string} name this is name in request body
* @property {number} age this is age in request body
*
* @typedef {object} showRequestQuery
* @property {string} name this is name in query
* @property {number} age this is age in query
*
* @param {import('express').Request<{}, {}, showRequestBody, showRequestQuery>} req
* @param {import('express').Response} res
* @param {import('express').NextFunction} next
*/
exports.show = function(req, res, next) {
};
注意:我在 vscode 中使用它。
在express.Request 上定义的其他方法/属性,例如req.headers
req.body提示
req.query提示
【讨论】:
我刚刚发现了一个老问题,其答案似乎暗示了一个好方法。我的意思不是那里公认的答案,而是@Steven Spunkin 的答案:
javascript - 如何使用 JSDoc 注释 Express 中间件? - 堆 溢出 How to annotate Express middlewares with JSDoc?
为简单起见,我在这里复制他的答案。欢迎评论!
/**
*
* @module myMiddleware
* @function
* @param req {Object} The request.
* @param res {Object} The response.
* @param req.params.foo {String} The foo param.
* @param req.query.bar {String} The bar query.
* @param req.body {Object} The JSON payload.
* @param {Function} next
* @return {undefined}
*/
function foo(req, res, next){ ... }
【讨论】: