收藏
回答

在云服务数据库中,使用Promise方式查询数据异常

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信安卓客户端 wx9bf5ba9ae100852b yunkaifa-1g4015llb43bf601 3.6.6

https://developers.weixin.qq.com/miniprogram/dev/wxcloudservice/wxcloud/guide/database/read.html

在云服务数据库中,使用Promise方式查询数据,发现查询不到,使用普通回调方式查询数据库能查询得到。

并且在云函数中,console.log或者console.err没有打印,云函数中的这些打印会在哪里显示?

// 创建集合云函数入口函数
exports.main = async (event, context) => {
    const operate_type = event.operate_type;
    if (operate_type === "query")
    {
        const union_id = event.union_id;        // 根据用户UnionID查询数据库中的用户信息
        let hasData = false;
        let userinfo = [];


        const collection = await db.collection('xiyu_user')
            collection.where({
                // UnionID: 'oScWS7eBl9IYYEcH8zbuPdxC5kII'
                UnionID: union_id
            })
            .limit(10)
            .get()
            .then( res => {
                if (res.data.length > 0){
                    hasData  = true;
                    userinfo = res.data;
                }else{
                    hasData  = false;
                    userinfo = res.data;
                }
            })
            .catch (err => {
                // 这里catch到的是该collection已经存在,从业务逻辑上来说是运行成功的,所以catch返回success给前端,避免工具在前端抛出异常
                console.error("query user info error: ", err)
            })


            return {
                success: hasData,
                data: userinfo
            };
    }
};
回答关注问题邀请回答
收藏

2 个回答

  • ZHOU
    ZHOU
    发表于小程序端
    11-21

    你这加了then,return就写到then里去呀,或者去掉then直接用外面的await获取结果就行了

    11-21
    有用 1
    回复 2
    • ZHOU
      ZHOU
      发表于小程序端
      11-21

      不能在then里return,你直接把then里的逻辑移到外面从collection里取数据就行了,本身这里你就用了await

      11-21
      回复
    • yzqt
      yzqt
      10小时前
      好,按你说的来!
      10小时前
      回复
  • showms
    showms
    11-21

    又是await又是then的。。

    11-21
    有用
    回复 1
    • yzqt
      yzqt
      10小时前
      谢谢!
      10小时前
      回复
登录 后发表内容