MongoDB_用户登录逻辑

规则

/*
1.从mongodb中取某个用户信息
2.根据用户年龄决定以下流程
	2-1 年龄小于18岁,进入防沉迷
	2-2 年龄大于18岁,验证身份证
3.根据不同等级的用户,展示不同页面
4.根据以上结果,进入游戏
*/

代码

function getUserInfoFromDB(userId, callback){
	const user = {age:0}
	user.age = 18 + (Math.ceil(Math.random()*3-1.5))
	setTimeout(()=>{
		callback(null, user)
	},1000)
}

const MAX_USER_ADDCTION_CONTROL_AGE = 18 // 防沉迷常量

function isIdentitycardValid(user, cb){
	setTimeout(()=>{
		callback(null, true)
	}, 1000)
}

function enterAddictionControlSys(user, cb){
	setTimeout(()=>{
		callback(null, ture)
	},1000)
}

async function getLevelInfo(user, cb){
}

(async()=> {
	const user = await getUserInfoFromDB('unserId2')
	let id Valid = false
	let enterACSPromise = false
	if(user.age > 18){
		idValid = await isIdentityCardValid(user)
		if(!idValid){
			enterACSPromise = enterAddictionControlSys()
		}else{
			enterACSPromise = enterAddictionControlSys()
		}
		const levelInfoPromise = getLevelInfo()
		const results = await Promise.all([enterACSPromise, levelInfoPromise])
		if(results[0] && results[1] >20){
			constole.log('done')
		}else{
			constole.log('doomed')
			}
})()

getUserInfoFromDB('userId1'(err,user)=>{
	let level0ver20 = false
	let enteredACS = false
	if(err){
		console.log('error getting user', err)
		return
	}

	if(user.age>MAX_USER_ADDCTION_CONTROL_AGE ){
		isIdentitycardValid(user,(err,valid)=>{
			if(valid){
				console.log('done')
			}else{
			enterAddictionControlSys(user,(err, result)=>{
				enteredACS = true
				if(level0ver20 && enteredACS){
					console('done')
				}			
				console.log('请校验身份证信息')
			})
			}
		})
	}else{
		enterAddictionControlSys(user,(err,result)=>{
			console.log('年龄不够18岁,不准上网')
		})
	}
	getLevelInfo(user, (err, level)=>{
		leve10ver20 = level > 20
		if(level0ver20 && enteredACS){
			console.log('done')
		}
	})
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Supernova_gu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值