需求描述
基于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方法導出,不然是無法進行入庫的。