2017-10-12 215 views
3

删除一对多的关系我执行如下的批处理:在火力云公司的FireStore

batch.set(doc, { 
    "Users": { 
     [userKey]: null 
    } 
}, { merge: true }) 

它把空值的关系,但并没有将其删除。

我需要删除对象的字段和值,因为它在实时数据库中不会保留空值。

如果我使用firebase.firestore.FieldValue.delete()只适用于对象而不适用于其字段。

+0

您是否尝试过使用batch.doc(docid).collection('Users').doc('userKey').delete()? – Kato

+1

batch.doc(docid).collection('Users').doc('userKey').delete()将用'Users'子集合删除'userKey'文档,但不删除文档中的字段' FieldValue.delete()'是做到这一点的方法。 –

回答

1

无论好坏,Firestore将null的值视为不同于不存在的字段,因此将值设置为null将无法​​达到您想要的值。

FieldValue.delete()删除领域,而不是文档的方式,所以这应该删除领域:

batch.set(doc, { 
    "Users": { 
    [userKey]: firebase.firestore.FieldValue.delete() 
    } 
}, { merge: true }); 

然而有目前在发布的SDK,防止这种按预期工作中的错误。现在使用

batch.update(
    'Users.userKey', 
    firebase.firestore.FieldValue.delete()); 
+0

我试过这个:“[userKey]:firebase.firestore.FieldValue.delete()”,但失败表示它只能与根字段一起工作。 –

+0

然后试试这个:''Users.userKey',firebase.firestore.FieldValue.delete()“,但我不知道如何将”userKey“设置为动态值。 –

+0

如果你想在一个名为userKey的变量中删除userKey,你可以连接:'Users'。 + userKey。字段路径只是字符串。 –