创建uniapp项目引入uni-id用户体系使用beforeRegister钩子创建默认昵称
需求描述
基于uniCloud开发项目,通常会使用用户体系,uni-id就是基于uniCloud的用户体系,满足常规需要的账号密码注册、登录,微信登录等快捷方式,如果使用uni-id自带的uni-id-pages插件,账号密码注册的话,可以设置默认的昵称,但是使用微信或者手机号快捷登录的话是无法设置默认昵称的,可以采用官方推荐的beforeRegister钩子,会在注册用户记录入库前触发,接收到参数并按照我们的需要插入到数据库中。
解决办法
beforeRegister在注册用户记录入库前触发。钩子地址:https://doc.dcloud.net.cn/uniCloud/uni-id/summary.html#before-register
可以通过查看文档有详细的入参及示例,下面这段代码是在入库之前,设置默认昵称的代码。
插入路径
unicloud -> common -> uni-config-center -> uni-id -> hooks -> index.js
如果你的项目中没有我写的这个路径,就按照我上面的名称创建出该文件夹,最后index.js的代码如下:
// 钩子函数示例 hooks/index.js
function beforeRegister({userRecord,clientInfo
} = {}) { if(!userRecord.nickname) {userRecord.nickname = "匿名"+Math.random().toString(36).substring(3,9)} return userRecord
}module.exports = {beforeRegister
}
在上面示例代码中,userRecord是即将入库的数据,我们来判断入库数据是否包含nickname这个字段,如果包含不做任何操作,不包含就返回一个“匿名”+随机6位字符串,当然你可以按照你自己的需求来设置默认昵称。
最后千万不要忘了module.exports将beforeRegister方法导出,不然是无法进行入库的。