idcims
idcims
  • 发布:2022-09-24 17:05
  • 更新:2022-09-24 20:53
  • 阅读:265

云对象中怎么引用查询出来的数据?

分类:uniCloud
const dbJQL = uniCloud.databaseForJQL({   
            clientInfo: this.getClientInfo()  
        })  
const data = dbJQL.collection("notice").get()  

data.forEach(item=>{  
……  
})

像这样的在云对象里是会报错的,想问:为什么return data是可以的,为什么里面边console.log(data),data却是空的,要怎么才可以调用data

2022-09-24 17:05 负责人:无 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

你这。。。基本语法不明白。Promise知道是什么吧?那么async函数也知道吧?uniCloud云函数是支持async的。这里get方法返回的是一个Promise,这点知道吧?你这里去遍历一个Promise干嘛呢!当然会报错了,Promise是不可遍历的。异步云函数本来就是返回一个Promise的,即使你写成 return "hello world",它也转化为一个Promise再返回啊。所以你这里直接返回data当然可以呐!

exports.main = async (event, context) => {  
               // 也可以改成 return Promise.resolve("hello world")哦  
        return "hello world"  
};  

你可以改成如下:

const dbJQL = uniCloud.databaseForJQL({     
            clientInfo: this.getClientInfo()    
        })    
dbJQL.collection("notice").get().then(data => {  
    data.forEach(item=>{  
// 干某些不可描述的事情  
.....  
})  

})  

也可以在此方法前加async 再加上await, 如下 :

 async hello (){  
const data = await dbJQL.collection("notice").get()   
data.forEach( item => {  
.........  
})  

}
  • idcims (作者)

    明白……感谢哈

    2022-09-26 13:40

该问题目前已经被锁定, 无法添加新回复