3***@qq.com
3***@qq.com
  • 发布:2023-12-10 23:18
  • 更新:2023-12-11 11:07
  • 阅读:286

为什么我在获取数据的时候总是为null,但是我在外边获取数据是正常的?

分类:uniCloud
复制代码async createRechargeOrder(uid, money, type) {  
        const start = new Date().getTime();  

        // 使用 usemall-member-wallet-change 集合记录用户钱包变动  
        const walletChangeCollection = this.db.collection('usemall-member-wallet-change');  
        // 使用 usemall-member-wallet 集合记录用户的钱包信息  
        const walletCollection = this.db.collection('usemall-member-wallet');  

        const currentTime = new Date().getTime();  

            // 创建一条充值记录  
            const rechargeRecord = {  
                wallet_id: uid,  
                user_id: uid,  
                order_id: null,  
                balance_change: money,  
                type: type,  
                created_at: currentTime,  
            };  

            // 向 usemall-member-wallet-change 表中插入记录  
            const result = await walletChangeCollection.add(rechargeRecord);  

            // 获取当前用户的钱包信息  
            const walletInfo = await walletCollection.doc(uid).get();  
            console.log(walletInfo.data)  
            if (walletInfo.data) {  
                // 如果用户的钱包信息存在,更新余额  
                // 使用0作为默认值,如果balance为null  

                const currentBalance = walletInfo.data.balance || 0;  

                const newBalance = currentBalance + parseInt(money, 10);  
                // 更新用户钱包表  
                await walletCollection.doc(uid).update({  
                    balance: newBalance,  
                    // 根据你的业务需求更新其他字段  
                });  

                console.log(`用户 ${uid} 的钱包余额更新成功,新余额:${currentBalance}`);  
            } else {  
                // 如果用户的钱包信息不存在,根据实际需求进行处理  
                console.error(`用户 ${uid} 的钱包信息不存在`);  
            }  

            const end = new Date().getTime();  
            console.log(`生成充值订单耗时:${end - start}ms`);  

            return {  
                order_id: result.id  
            };  
        } catch (error) {  
            console.error('创建充值订单失败', error);  
            throw error; // 抛出错误以便外部捕获  
        }  
    }  

这里的const currentBalance = walletInfo.data.balance || 0; 这里可以获取到null,但是我的数据库里数据并不是null
,图片里是我的对应的数据库,balance是int类型。

【已解决】 数据是数据形式需要const currentBalance = walletInfo.data[0].balance || 0; 选择第一个数据

2023-12-10 23:18 负责人:无 分享
已邀请:

要回复问题请先登录注册

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容