收藏
回答

在云函数调用云数据库的api没有反应?

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const userInfo = db.collection('userInfo')
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  //通过openid查询是否存在用户
  userInfo.where({
    _openid: wxContext.OPENID
  }) .count().then(res =>{
    if(res.total==0){
      return true
    }
    else{
      return false  
    }
  })
}

d 返回的result 一直是null

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

3 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-05-22
    return await userInfo.where()   这么写
    
    2020-05-22
    有用 1
    回复 2
    • healer
      healer
      2020-05-22
      为什么要这么写呢,这样写确实可以了
      2020-05-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-05-22回复healer
      因为这么写就对,没为什么,代码写多了你就知道了
      2020-05-22
      回复
  • Terry.Zhao
    Terry.Zhao
    2020-06-06

    简单解释一下原因,main函数可以接受两种返回值,直接return xxx(同步调用),或者return 一个Promise(异步调用)。

    数据库请求默认是返回promise(异步),但也支持await同步,所以如果直接return的话需要await做同步,如果不想用await,可以用return new Promise((resolve,reject)=>{resolve(YOUR RESULT)})这种方式处理。

    供参考

    2020-06-06
    有用
    回复 1
    • Terry.Zhao
      Terry.Zhao
      2020-06-06
      对了,建议在then里面打印结果,这样调试的时候你就会看到实际上是有查询请求返回的,但是这个时候你已经return了空的结果了,方便查问题和理解。
      2020-06-06
      回复
  • A.充满希望的明天
    A.充满希望的明天
    2020-05-22

    可以不写return 但是await一定要

    2020-05-22
    有用
    回复 1
    • healer
      healer
      2020-05-22
      单写await也没反应,
      2020-05-22
      回复
登录 后发表内容
问题标签