'use strict'; /** * 处理密码类型的数据的中间件 * 在处理前拦截,在传来的数据中 找是否有 key 在keyWord列表中. * 将在列表中的key的值转换成{secret:${value}},再去提交,免去重写create函数 */ const _ = require('lodash'); const { ObjectId } = require('mongoose').Types; const keyWord = [ 'password', 'passwd', 'pwd' ]; module.exports = options => { return async function createPassword(ctx, next) { const { method, url } = ctx.request; if (method === 'POST') { const body = ctx.request.body; const mid = _.pick(body, keyWord); if (Object.keys(mid).length > 0) { for (const key of Object.keys(mid)) { ctx.request.body[key] = { secret: body[key] }; } } } await next(); }; };