收藏
回答

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


数据库中的数据:

云函数入口文件: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)
      }
    })
  },

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

云函数调用日志:

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

3 个回答

  • Why not?
    Why not?
    2020-02-12

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

    2020-02-12
    有用 3
    回复 4
    • 有理有据
      有理有据
      2020-02-12
      感谢解答,用promise后问题解决了
      2020-02-12
      1
      回复
    • Why not?
      Why not?
      2020-02-12回复有理有据
      好的,问题解决了点个赞,养成好习惯。
      2020-02-12
      3
      回复
    • 有理有据
      有理有据
      2020-02-12
      OK
      2020-02-12
      1
      回复
    • Fu
      Fu
      04-27回复有理有据
      请问这个解决方案可以发一下吗?
      04-27
      回复
  • 老张
    老张
    2020-02-12

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

    2020-02-12
    有用 2
    回复 1
    • 有理有据
      有理有据
      2020-02-12
      刚刚用await成功执行数据库操作,多谢解答
      2020-02-12
      1
      回复
  • 《驾考俱乐部》
    《驾考俱乐部》
    2020-03-25
    是呀怎么写啊?
    2020-03-25
    有用
    回复
登录 后发表内容
问题标签