首页 > 解决方案 > 我正在尝试从 Firestore 中删除一些数据,但出现问题(反应)

问题描述

export function DeletePayment(paymentRefs) {
  return async (dispatch) => {
    await firebase
    .firestore()
    .collection("payments")
    .doc(firebase.auth().currentUser.uid)
    .collection("payment")
    .where("uid", "==", firebase.auth().currentUser.uid)
    .onSnapshot(async (result) => {
      const batch = firebase.firestore().batch();
      paymentRefs.forEach((ref) => {
        batch.delete(ref);
      });
      await batch.commit();
    })
  }
}

paymentRefs 是数组的对象,现在运行此代码时出现此错误

Unhandled Rejection (FirebaseError): Expected type 't', but it was: a custom Object object

标签: reactjsfirebase

解决方案


试试这个:

export function DeletePayments(paymentRefs) {
  const batch = firebase.firestore().batch();
  paymentRefs.forEach((ref) => {
    batch.delete(ref);
  });
  return batch.commit()
}

这将在批处理结束时删除所有文档引用,并将返回一个您可以在每次调用该函数时处理的承诺。

编辑:如果您在每个对象中都有付款的 ID paymentRefs,您可以尝试这样的事情。

export function DeletePayments(paymentRefs) {
  const batch = firebase.firestore().batch();
  paymentRefs.forEach((ref) => {
    batch.delete(firebase.firestore().doc(`payments/${firebase.auth().currentUser.uid}/payment/${ref.id}`));
  });
  return batch.commit()
}


推荐阅读