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);
}
}
}