node express中的一个问题
app.get('/api/mes/get',function(req,res){
const wa = req.session.wa
if(!req.session.name){
res.json({code:100})//么登录
return;
}else{
db.limModel.findOne({name:req.session.name},(err,doc)=>{
//更新限制次数
var key = doc.getnum;
key++;
if(!err){
if(key<10){
db.limModel.update({name:req.session.name},{getnum:key},(e,d)=>{
if(!e){
db.mesModel.find().count(function(err,num){
var maxnum = num
if(!err){
function ya(){
var randnum = Math.round(maxnum*Math.random());
if(wa.indexOf(randnum) == -1){
wa.push(randnum)
console.log(randnum)
return randnum
}else{
return ya();
}
}
ya()
console.log(req.session.wa)
db.mesModel.find().skip(ya()).limit(1).exec(function(err,doc){
const d1 = doc;
db.userDetailsModel.findOne({name:req.session.name},(e,d)=>{
if(!e){
res.json({d1,d})
}
});
})
}
})
}else{
console.log(e)
}
});
}else{
res.json({code:200})//每天10次
}
}else{
console.log(err)
}
})
}
})
问题出现在打印的那个console.log(randnum)和console.log(req.session.wa)中,已经设置了req.session.wa为一个空的数组
目的是,通过mongo的skip来达到随机取数据,skip的值为随机数,为了让不取到重复的值,就把已经取过了的skip的值放进session里,但是测试的时候发现不对
从第一次取随机数之后,后面的都进行了两两次随机数取值,然后单独把skip那一段打印
db.limModel.findOne({name:'ba'},(err,doc)=>{
var wa = new Array()
var key = doc.getnum;
key++;
if(!err){
if(key<10){
db.limModel.update({name:'ba'},{getnum:key},(e,d)=>{
if(!e){
db.mesModel.find().count(function(err,num){
var maxnum = num
if(!err){
function ya(){
var randnum = Math.round(maxnum*Math.random());
console.log(randnum)
if(wa.indexOf(randnum) == -1){
wa.push(randnum)
console.log(randnum)
return
}else{
return ya();
}
}
ya();
db.mesModel.find().skip(ya()).limit(1).exec(function(err,doc){
})
}
})
}else{
console.log(e)
}
});
}else{
res.json({code:200})//每天10次
}
}else{
console.log(err)
}
})
居然是这样的,为什么会出现这样的事啊,求大神讲一下啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)