如何从仅包含单个对象元素的数组中取出该对象?附Firestore查询示例
实现方案
你当前无法取值的核心原因是db.collection('SOCIAL').get()是异步方法,返回的是Promise对象,无法在同步代码中直接拿到返回结果,且确定只返回单条文档的情况下不需要遍历整个docs数组,直接取第一个元素即可。
方案1:直接在.then回调中取值使用
db.collection('SOCIAL').get().then((snapshot) =>{ // 非空判断避免查询结果为空时报错 if (!snapshot.empty) { // 直接取第一条文档的数据作为临时变量 const tempData = snapshot.docs[0].data() // 所有需要用到这个值的逻辑都可以写在这里 console.log('取出的单条文档数据:', tempData) } })
方案2:用async/await语法简化异步逻辑
如果需要在多个地方使用这个值,可以封装成异步函数调用:
// 封装查询方法 async function fetchSingleSocialDoc() { const snapshot = await db.collection('SOCIAL').get() return snapshot.empty ? null : snapshot.docs[0].data() } // 业务逻辑调用 async function handleBusiness() { // 拿到临时变量 const tempData = await fetchSingleSocialDoc() if (tempData) { // 在这里正常使用变量即可 console.log(tempData) } } // 触发业务逻辑 handleBusiness()
内容的提问来源于stack exchange,提问作者Никита Шапаренко
相关产品推荐
相关产品推荐

