s***@qq.com
s***@qq.com
  • 发布:2023-09-08 14:16
  • 更新:2023-09-08 15:31
  • 阅读:130

unicloud-db如何使用远程条件

分类:uni-app

一个页面传入ID,用这个ID从远程取出fang_share表的share_ids字段,unicloud-db组件查询 articles 表,通过where条件 _id in share_ids
我在onLoad时获取ID,使用了await 查询出share_ids,设置where条件,再手工加载数据,
但我无论是从onReady中加载,还是写在 await后面,加载时的where条件还是初始的。
尝试 watch和computed也不正常。

async onLoad(event) {  
            if (event.id) {  
                this.id = event.id;  
                const res = await db.collection('fang_share').doc(this.id).get()  
                const data = res.result.data[0]  
                const share_ids = data.share_ids.map(item=>"'"+item+"'")  
                this.where = "_id in ["+share_ids+"]"  
                this.$refs.udb.loadData()  
            }else {  
                uni.showToast({  
                    icon: 'none',  
                    title: '出错了,ID为空'  
                })  
            }  
        }

或者


async onLoad(event) {  
            if (event.id) {  
                this.id = event.id;  
                const res = await db.collection('fang_share').doc(this.id).get()  
                const data = res.result.data[0]  
                const share_ids = data.share_ids.map(item=>"'"+item+"'")  
                this.where = "_id in ["+share_ids+"]"  
            }else {  
                uni.showToast({  
                    icon: 'none',  
                    title: '出错了,ID为空'  
                })  
            }  
        },  
        onReady(event) {  
            if (this.id) {  
                this.$refs.udb.loadData()  
            }  
        },
2023-09-08 14:16 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

试试这样,延迟10毫秒

async onLoad(event) {    
            if (event.id) {    
                this.id = event.id;    
                const res = await db.collection('fang_share').doc(this.id).get()    
                const data = res.result.data[0]    
                const share_ids = data.share_ids.map(item=>"'"+item+"'")    
                this.where = "_id in ["+share_ids+"]"    
                setTimeout(() => {  
                  this.$refs.udb.loadData()    
               }, 10);  
            }else {    
                uni.showToast({    
                    icon: 'none',    
                    title: '出错了,ID为空'    
                })    
            }    
        }
s***@qq.com

s***@qq.com (作者)

嗯,延迟是有用的,我之前在用计算属性是偶尔会出现正常数据,没想到用延迟。
因为数据量不大,我后来放弃用unicloud-db组件,直接取出全部数据赋值给了初始变量使用。
多谢!

要回复问题请先登录注册