收藏
回答

云函数中操作数据库,云函数已经成功调用,但是似乎数据库操作并没有执行?云函数应该怎么写?


数据库中的数据:

云函数入口文件:update.js

const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
  console.log('开始执行云函数')
  const db = cloud.database()
  const _ = db.command
  db.collection('counters').doc('d68532785e4106d60d4591e158437e05').update({
    data: {
      count: 20
    },
    success: res => {
      console.log('更新成功')
    },
    fail: err => {
      console.log('更新失败')
    }
  })
  return {
    info:'云函数执行完成'
  }
}

调用云函数:

updateData: function() {
    wx.cloud.callFunction({
      name:'update',
      success:function(res){
        console.log(res)
      }
    })
  },

执行完成之后的控制台输出:

云函数调用日志:

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

2 个回答

  • Why not?
    Why not?
    02-12

    你是异步更新的,db操作还没结束就返回了,得返回一个Promise才可以。看文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/async.html

    02-12
    赞同 3
    回复 3
    • 望1
      望1
      02-12
      感谢解答,用promise后问题解决了
      02-12
      1
      回复
    • Why not?
      Why not?
      02-12回复望1
      好的,问题解决了点个赞,养成好习惯。
      02-12
      2
      回复
    • 望1
      望1
      02-12
      OK
      02-12
      1
      回复
  • 老张
    老张
    02-12

    异步改同步。async/await了解一下。

    02-12
    赞同 2
    回复 1
    • 望1
      望1
      02-12
      刚刚用await成功执行数据库操作,多谢解答
      02-12
      1
      回复
登录 后发表内容
问题标签