收藏
回答

云函数查询数据库返回问题?

以下代码,为什么会查询失败,返回null,哪里写错了,请指教,谢谢。

const cloud = require('wx-server-sdk')
cloud.init()

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

  const wxContext = cloud.getWXContext()
  const thisOpenId = wxContext.OPENID

  const db = cloud.database()
  db.collection('staff').where({
      staffOpenId: thisOpenId
    }).get({
      success: function (res) {
        return res.data
      }
    })

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

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-07-27

    return await db.get()

    2020-07-27
    有用 1
    回复 9
    • 唐同学
      唐同学
      2020-07-27
      能否在查询成功后,做逻辑判断,返回自定义对象,例如返回[{thisOpenId: thisOpenId,isPass: true}]。
      2020-07-27
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-07-27回复唐同学
      const result = await db.get()
      if(result) {
         return {};
      }
      2020-07-27
      回复
    • 唐同学
      唐同学
      2020-07-27
      你好,正如下面老张所言,并不能再success中做逻辑判断,怎么办?如何能实现根据查询结果,做逻辑判断再返回?谢谢
      2020-07-27
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-07-27回复唐同学
      我是没告诉你吗?
      2020-07-27
      回复
    • 唐同学
      唐同学
      2020-07-27
      exports.main = async (event, context) => {
        const wxContext = cloud.getWXContext()
        const thisOpenId = wxContext.OPENID
        const db = cloud.database()
        let result = 'init'
        const action = await db.collection('staff').where({
          staffOpenId: thisOpenId
        }).get({
          success: function (res) {
            //这里做逻辑判断,决定返回什么内容
            result = [{
              thisOpenId: thisOpenId,
              isPass: true
            }]
          }
        });
        if (action) {
          return result
        }
      }
      2020-07-27
      回复
    查看更多(4)
  • 老张
    老张
    2020-07-27

    我反正只要看到云函数里有success,就知道会错。

    2020-07-27
    有用
    回复 4
    • 唐同学
      唐同学
      2020-07-27
      exports.main = async (event, context) => {
        const wxContext = cloud.getWXContext()
        const thisOpenId = wxContext.OPENID
        const db = cloud.database()
        let result
        const action = await db.collection('staff').where({
          staffOpenId: thisOpenId
        }).get({
          success: function (res) {
            result = [{
              thisOpenId: thisOpenId,
              isPass: true
            }]
          }
        });
        if (action) {
          return result
        }
      }
      2020-07-27
      回复
    • 唐同学
      唐同学
      2020-07-27
      如你所言,并不能再success中做逻辑判断,怎么办?如何能实现根据查询结果,做逻辑判断再返回?谢谢
      2020-07-27
      回复
    • 老张
      老张
      2020-07-27回复唐同学
      前面已经有人告诉你答案了。看来你需要去学习一下async/await
      2020-07-27
      回复
    • 唐同学
      唐同学
      2020-07-27
      收到
      2020-07-27
      回复
登录 后发表内容
问题标签