【四】鸡汤来咯开发学习笔记-79

前端 · 2024-09-01

1.避免用户读完鸡汤,第二天没有东西,就判断用户读完后,在已经读了的表里面获取重复的东西来读
用if(data.length==0) return getSoup("random")来进行,然后函数调用判断字符

const getSoup=async(type='get')=>{
  let {result:{data:todayData=[],errCode=-1}={}} =await db.collection("soup-today").where(`user_id==$cloudEnv_uid`).get()
    if(todayData.length && type=='get'){
        if(errCode!=0) return showToast("信息有误,重新刷新","none");
        listData.value=todayData[0].soup_list;
}else{
  let {result:{data:data2}} =await db.collection("soup-user-read").where(`user_id==$cloudEnv_uid`).get()
  let readSoup=data2.map(item=>item.soup_id)
  if(type=='random'){
      let {result:{errCode,data}}= await db.collection("soup-chicken").aggregate()
      .match({
            status:1,
            is_delete:dbCmd.neq(true),
            _id:dbCmd.in(readSoup)
      
      })
      
      .lookup({
            from:"uni-id-users",
            let:{
                uid:'$user_id'
            },
            pipeline:$.pipeline().match(dbCmd.expr($.eq(['$_id','$$uid']))).project({username:1,avatar:1}).done(),
            as:'userInfo'
      })
      .sample({
            size:5
      })
      .limit(5)
      .project({
            collect_count:1,
            comment_count:1,
            content:1,
            from:1,
            like_count:1,
            soup_type:1,
            view_count:1,
            userInfo:$.arrayElemAt(['$userInfo',0])
      })
      .end()
      if(errCode!=0) return showToast("信息有误,重新刷新","none");
      if(data.length==0)  return getSoup("random")
      data[0].is_read=true;    
      listData.value=data;
      db.collection("soup-today").add({
            user_id:currentUser,
            soup_list:data
      })
      console.log(data);
      
  }else{
      let {result:{errCode,data}}= await db.collection("soup-chicken").aggregate()
      .match({
            status:1,
            is_delete:dbCmd.neq(true),
            _id:dbCmd.nin(readSoup)
      
      })
      
      .lookup({
            from:"uni-id-users",
            let:{
                uid:'$user_id'
            },
            pipeline:$.pipeline().match(dbCmd.expr($.eq(['$_id','$$uid']))).project({username:1,avatar:1}).done(),
            as:'userInfo'
      })
      .sample({
            size:5
      })
      .limit(5)
      .project({
            collect_count:1,
            comment_count:1,
            content:1,
            from:1,
            like_count:1,
            soup_type:1,
            view_count:1,
            userInfo:$.arrayElemAt(['$userInfo',0])
      })
      .end()
      if(errCode!=0) return showToast("信息有误,重新刷新","none");
      if(data.length==0)  return getSoup("random")
      data[0].is_read=true;    
      listData.value=data;
      db.collection("soup-today").add({
            user_id:currentUser,
            soup_list:data
      })
      console.log(data);
    }
  }
  
 
}
Theme Jasmine by Kent Liao