当数据库无数据场景下,代码去重操作时,数据显示为空。
来源:3-11 歌单数据去重
weixin_慕奕锌
2020-08-11
当数据库无数据场景下,代码去重操作时,在云函数getList中;由于playlist数据从URL获得是一直有值的,但此时数据库为空,由于数据库如果为空,变量countResult、total、凡事从数据库调用的值都为空,导致tasks,list.data都为空,会导致无法进入for循环,从而newData无值,向数据库插入数据也会为空,导致一个恶性循环。这是里是缺少一个数据库为空时,的逻辑处理。不知是我的理解出错,还是少写了代码,希望老师回答。
// 云函数入口函数
exports.main = async (event, context) => {
const countResult = await playlistCollection.count()
console.log(“countResult@@” + JSON.stringify(countResult))
const total = countResult.total
console.log(“total@@” + total)
const batchTimes = Math.ceil(total / MAX_LIMIT)
console.log(“batchTimes@@” + batchTimes)
const tasks = []
for (let i = 0; i < batchTimes; i++) {
let promise = playlistCollection.skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
···
···
···
for (let i = 0; i < playlist.length; i++) {
let flag = true
for (let j = 0; j < list.data.length; j++) {
if (playlist[i].id === list.data[j].id) {
flag = false
break
}
if (flag) {
newDate.push(playlist[i])
}
}
1回答
-
可以看下这段代码的逻辑:
如果数据库中没有数据,那就是list.data = [],这样的话内层for循环就不会执行,所以每一条读取到的playlist的数据都会放到newData中。
022020-08-12
相似问题