AngularFirestore查询where条件不匹配时else无输出问题求助
问题分析与解决
问题根源:你的代码是在遍历查询结果的每个文档时判断单个文档是否存在,但当没有匹配的文档时,查询结果集是空的,
forEach循环根本不会执行,所以else分支永远不会触发,自然看不到"No"的输出。修正方案:先判断整个查询结果是否为空,再处理单个文档(如果有的话)。修改后的代码如下:
this.angulfirestore.collection('client', ref => ref.where('name', '==', 'Karl')).get() .subscribe(datas => { if (datas.empty) { console.log('No'); } else { datas.forEach(el => { if (el.exists === true) { console.log('OK'); } }); } })
- 简化优化:
QuerySnapshot返回的文档都是存在的,单个文档的exists判断其实多余,还可以进一步简化代码:
this.angulfirestore.collection('client', ref => ref.where('name', '==', 'Karl')).get() .subscribe(datas => { datas.empty ? console.log('No') : console.log('OK'); // 如果需要输出所有匹配文档的OK,就保留forEach:datas.forEach(() => console.log('OK')) })
内容的提问来源于stack exchange,提问作者Zé-da-Véstia Lidia
相关产品推荐
相关产品推荐

