Firestore 数据模型不一致

我试图在 firestore 中保存一些数据,数据由事件组成,每个事件都有一个日期和每个参与者。


我现在要做的是像这样建模events/${eventDate}/${userEmail},然后我会用用户的数据来设置它。但是,当我尝试设置此数据时,我收到一条错误消息,指出段号应该是偶数。


当我在路径中添加另一个段时(我不想这样做):


events/${eventDate}/attendees/${userEmail} 我能够设置数据,但无法检索它(尝试检索给定活动日期的所有参与者。


// insertion - this worked after some tweaking

this.db.collection('pickups').doc(pickupDate).set({ [email]: userData})



// deletion (this doesn't work - expects even number of segments)

this.db.collection('pickups').doc(`${pickupDate}/${email}`).delete()


// retrieval (works)

this.db.collection('pickups').doc(pickupDate).valueChanges()

当前删除:


 this.db.collection('pickups').doc(pickupDate).update({

        [email]: firestore.FieldValue.delete()

      })

我在这里缺少什么?这不应该像普通的 JSON 吗?


墨色风雨
浏览 123回答 2
2回答

叮当猫咪

听起来您要做的是从文档中删除一个字段。但是,您拥有此代码:this.db.collection('pickups').doc(`${pickupDate}/${email}`).delete()正在尝试构建对集合的引用,然后将其删除。在文档中使用collection()和doc()引用字段是不正确的。它们仅用于构建对文档和集合的引用。如果要删除文档中的字段,请先构建对包含该字段的文档的引用:const ref = this.db.collection('pickups').doc(pickupDate)然后更新文档以指示您希望删除该字段:ref.update({ [email]: firebase.firestore.FieldValue.delete() }}您从 FieldValue 中引用delete()的方式将根据您将 SDK 导入代码的方式而改变。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript