收藏
回答

云函数调用数据库后返回小程序的result为null

云函数:

exports.main = async (event, context) => new Promise((resolve, reject) => {
  db.collection('cardList').add({
    data: {
      name : 'name'
    },
    success: function () {
      resolve({status : 1})
    }
  });
})

小程序:

wx.cloud.callFunction({
      name: 'addCard',
      data: {
        name : 'name'
      },
      complete: res => {
        console.log('callFunction test result: ', res)
      },
      success  : res => {
        console.log(res)
      }
    })

小程序中打印出来的是:

{errMsg: "cloud.callFunction:ok", result: null, requestID: "e474bbe7-10e1-11e9-9884-525400192d0e"}


请问result为何返回的是 {status : 1}


但是官网的例子是可以输出的值

exports.main = (event, context) => new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(3333)
    }, 3000)
  })


{errMsg: "cloud.callFunction:ok", result: 3333, requestID: "e474bbe7-10e1-11e9-9884-525400192d0e"}

最后一次编辑于  01-06  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 半寸灰
    半寸灰
    01-07


    这样


    exports.main = async (event, context) => {  


     

    return await db.collection('cardList').add({      

         data: {        

            name: 'name',        

            }

       })

     


    }


    01-07
    赞同
    回复 1
    • 杨QD
      杨QD
      08-29
      我这么写也是返回null的值怎么半
      08-29
      回复
  • 海玄科技
    海玄科技
    01-05

    马上学习了一下 Promise  

    https://segmentfault.com/a/1190000007032448


    Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。

    这两个函数就是就是「回调函数」,由JavaScript引擎提供。

    resolve函数的作用:在异步操作成功时调用,并将异步操作的结果,作为参数传递出去; reject函数的作用:在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。


    resolve传递出去的结果,外部函数并没有 接收到吧?

    不知道我加个 return 对不对

    exports.main = async (event, context) => return new Promise((resolve, reject) => {})

    01-05
    赞同
    回复 5
    • CZL
      CZL
      01-06

      哥你这写法就有问题

      01-06
      回复
    • 海玄科技
      海玄科技
      01-06回复CZL

      哎呀!露怯了!

      01-06
      回复
    • 海玄科技
      海玄科技
      01-06

      本来以为我的锅!


      赶紧测试一下。


      然后,我要跟你杠精一下。



      exports.main = async (event, context) => {

         return new Promise((resolve, reject) => {})

      }


      这段代码,绝对没语法错误。


      你的 async(event,context) = > 这个后面少个 { } 中括号

      你不写 return ,肯定是null


      也不知道你是测试我的代码后错误,就来杠我,

      还是测都没测就来杠我!


      01-06
      回复
    • CZL
      CZL
      01-06

      哥你本来回复我的代码里就 是 async(event,context) = > 这个后面少个 { } 中括号

      01-06
      回复
    • 海玄科技
      海玄科技
      01-07回复CZL

      我是直接从你帖子里复制的。


      你是要杠嘛?


      也不说说后来如何?


      算了,不值得!交流!

      01-07
      回复