为了账号安全,请及时绑定邮箱和手机立即绑定

Firestore 数据模型不一致

Firestore 数据模型不一致

墨色风雨 2021-10-21 14:59:42
我试图在 firestore 中保存一些数据,数据由事件组成,每个事件都有一个日期和每个参与者。我现在要做的是像这样建模events/${eventDate}/${userEmail},然后我会用用户的数据来设置它。但是,当我尝试设置此数据时,我收到一条错误消息,指出段号应该是偶数。当我在路径中添加另一个段时(我不想这样做):events/${eventDate}/attendees/${userEmail} 我能够设置数据,但无法检索它(尝试检索给定活动日期的所有参与者。// insertion - this worked after some tweakingthis.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 吗?
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

听起来您要做的是从文档中删除一个字段。但是,您拥有此代码:


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 导入代码的方式而改变。


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信