Firebase Firestore:按对象的属性查询文档
我有一个联系人集合,其结构如下:Firebase Firestore:按对象的属性查询文档,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个联系人集合,其结构如下: name: 'XPTO Company', emails: { susan@xpto.com: { name: 'Susan', text: 'manager' }, fred@xpto.com: { name: 'Fred', text: 'marketing' } } 如何使用电子邮件检索文档susan@xpto.com" 比如: firebase.firestore().collection('contacts') .whe
name: 'XPTO Company',
emails: {
susan@xpto.com: { name: 'Susan', text: 'manager' },
fred@xpto.com: { name: 'Fred', text: 'marketing' }
}
如何使用电子邮件检索文档susan@xpto.com"
比如:
firebase.firestore().collection('contacts')
.where(new firebase.firestore.FieldPath('emails', email), '==', true).get()
.then(snap => {
})
您可以将保存电子邮件地址的属性
id
添加到电子邮件对象中。并将电子邮件对象键中的“.”替换为“-”,例如susan@xpto-com
,因此您的数据结构如下所示:
name: 'XPTO Company',
emails: {
susan@xpto-com: { id: 'susan@xpto.com', name: 'Susan', text: 'manager' },
fred@xpto-com: { id: 'fred@xpto.com', name: 'Fred', text: 'marketing' }
然后您可以通过电子邮件检索文档susan@xpto.com"这样:
firebase.firestore().collection('contacts')
.where('emails.susan@xpto-com.id', '==', 'susan@xpto.com').get()
.then(snap => {
})
你的提议不起作用吗?不起作用。Think仅适用于布尔值,而不适用于对象。您能为个人联系人创建公司的子集合吗?@JasonBerryman我很确定您当前不能按子集合进行查询。他们提到,如果我们想做这样的事情,我们应该重新构造数据。这取决于您需要从何处进行查询。如果你知道某个联系人属于某个特定的公司,那么这很容易。您没有错,不能跨多个文档查询子集合