数据库没有数据插入playlist

来源:3-11 歌单数据去重

慕沐7268204

2021-04-14

用了更新后的代码,代码没有错误,函数调用也成功,但是为什么数据库playlist一直没有数据的。。。本地测试也是成功

代码:// 云函数入口文件
const cloud = require(‘wx-server-sdk’)

cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database() //云数据初始化
const axios = require(‘axios’)
const URL = ‘https://apis.imooc.com/personalized?icode=838D6B1352803B27

const playlistCollection = db.collection(‘playlist’)
const MAX_LIMIT = 10
// 云函数入口函数
exports.main = async (event, context) => {
//const list = await playlistCollection.get()
const countResult = playlistCollection.count() //该方法返回值是一个对象,且为异步操作
const total = countResult.total //取到该数组的总条数
const batchTimes = Math.ceil(total / MAX_LIMIT) // 计算要取几次,220/100,向上取整取三次,异步操作
const tasks = []
for(let i = 0; i < batchTimes; i++){
let promise = playlistCollection.skip(i * MAX_LIMIT).limit(MAX_LIMIT) //每一次要取多少条
tasks.push(promise)
}

 let list = {
   data: []
 }
if(tasks > 0){       //当Promise执行完所有任务后,将每一次的数据拼接起来。
  list = (await Promise.all(tasks)).reduce((acc,cur)=>{
    return{
      data : acc.data.concat(cur.data)
    }
  })
}



 const { data } =  await axios.get(URL)  //ES6解构赋值,data下得result就是我们想要的数据
 if(data.code >= 1000){
   console.log(data.msg)
   return 0
 }
 const playlist = data.result


 const newData = []                    //去重操作
 for(let i = 0, len1 = playlist.length; i<len1; i++){
   let flag =true //标识符,若为true则id不相同
   for(let j = 0,len2 = list.data.length; j<len2; j++){  //判断数据库中list集合是否包含服务器已经拥有的数据
     if(playlist[i].id === list.data[i].id){
       flag = false
       break
     }
    }
     if(flag){
       let p1 = playlist[i]    //若没有相同的数据,则将数据插入到newData数组中去
       p1.createTime = db.serverDate()
       newData.push(p1)
     }
    }
    console.log(newData)

    if(newData.length > 0){
      await playlistCollection.add({
        data : [...newData]
      }).then((res)=>{
        console.log('插入成功')
      }).catch((res)=>{
        console.log('插入失败')
        console.loh(err)
      })
    }

    return newData.length
  }

图片描述

写回答

1回答

谢成

2021-04-15

需要梳理下这个逻辑,就是如果有新的推荐歌单会插入数据库,如果没有新的推荐歌单数据就不会插入数据库。


所以需要检查下是不是在第一次本地测试的时候,已经把当时那个时间推荐的歌单插入数据库了(歌单不是一直都会有新的),然后再下次测试的时候是不是就没有新的歌单了。

1
3
慕沐7268204
已解决!!谢谢老师!找了半天才发现是自己个别代码拼错。。
2021-04-15
共3条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程