2017-10-12 288 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。字段路徑只是字符串。 –

相關問題