收藏
回答

为什么云函数的本地调试有效,并能对数据库进行操作。但是在云端测试就不会对数据库有操作?


// 云函数入口文件
const cloud = require('wx-server-sdk')


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境


const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
  console.log(777777777)


  db.collection('learning_trees').get().then(res => {
    // res.data 是一个包含集合中有权限访问的所有记录的数据,不超过 20 条
    console.log(res.data)


    for (let index = 0; index < res.data.length; index++) {
            const element = res.data[index];
            var newGrowthValue=0;
            var newLifeValue=0;
            if(element.growth_value > 0){
               newGrowthValue = element.growth_value -30
            } 
            if(element.life_value > 0){
              newLifeValue = element.life_value -30
            } 
  
            if(newGrowthValue < 0){
                newGrowthValue = 0;
            }
            if(newLifeValue < 0){
              newLifeValue = 0;
            }
            //跟新数据
            db.collection('learning_trees').doc(element._id).update({
              data:{
               growth_value: newGrowthValue,
               life_value:newLifeValue
              }
             }).then(res=>{
               console.log(res)
             }).catch(error=>{
               console.log(error)
             })
          }
  })


     return "success";

}


以上是云函数的index.js代码,云函数本地调试就能对云数据库进行操作。但是云端测试就不会对云数据库进行操作,云端测试有日志输出。

并且config.json里写触发器时,云函数被自动调用时,也不会对云数据库进行操作。


云数据库权限开了

云函数权限


这是什么原因???求大佬解答

回答关注问题邀请回答
收藏

2 个回答

  • 跨商通
    跨商通
    02-23

    云函数里要用await。

    02-23
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    02-23

    这个代码执行了吗

    02-23
    有用
    回复 4
    • 挪挪
      挪挪
      发表于移动端
      02-23
      执行了控制台里显示了
      02-23
      回复
    • Mr.Zhao
      Mr.Zhao
      02-23回复挪挪
      这个呢
      02-23
      回复
    • 挪挪
      挪挪
      发表于移动端
      02-24回复Mr.Zhao
      云端测试就不执行,本地测试就能执行
      02-24
      回复
    • Mr.Zhao
      Mr.Zhao
      02-24回复挪挪
      加上async await
      02-24
      回复
登录 后发表内容