使用字段值删除 firebase 文档

发布于 2025-01-17 11:21:17 字数 676 浏览 0 评论 0 原文

我正在尝试删除firebase文档,但问题是我想使用字段删除特定的文档。

如上所述,我在许多文档中都有USER_UID_1和USER_UID_2。我想在单击删除时将它们与(401和337)与(401和337)匹配。

    export const deleteChat = (chatId) => {
  return async (dispatch) => {
    const db = firestore();
    db.collection("conversations")
      .doc(chatId)
      .delete()
      .then(() => {
        dispatch({
          type: userConstants.GET_REALTIME_MESSAGES,
        });
      })
      .catch((error) => {
        console.log(error);
      });
  };
};

I am trying to delete a firebase document but the problem is I want to delete specific documents using fields.

as seen above I have user_uid_1 and user_uid_2 in many documents. and I want to match them like every document with (401 and 337) should be deleted when I click delete.

    export const deleteChat = (chatId) => {
  return async (dispatch) => {
    const db = firestore();
    db.collection("conversations")
      .doc(chatId)
      .delete()
      .then(() => {
        dispatch({
          type: userConstants.GET_REALTIME_MESSAGES,
        });
      })
      .catch((error) => {
        console.log(error);
      });
  };
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

睫毛溺水了 2025-01-24 11:21:17

您可以使用 where 方法进行查询,并为找到的每个文档循环使用 delete() 方法。请参阅下面的示例代码:

const coversations = db.collection('conversations')
.where('user_id_1', '==', '401')
.where('user_id_2', '==', '337');

coversations.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    doc.ref.delete();
  });
});

如果 (401 和 337) 可以同时出现在 user_id_1user_id_2 中,您可以执行一个简单的逻辑来检查是否存在场上发生的事情。请参阅下面的示例代码:

const coversations = db.collection('conversations');

coversations.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    const n = ['401', '307'];
    if (n.includes(doc.data().user_uid_1) && n.includes(doc.data().user_uid_2)) {
      doc.ref.delete();
    }
  });
});

You could query using the where method and loop the delete() method for each document found. See sample code below:

const coversations = db.collection('conversations')
.where('user_id_1', '==', '401')
.where('user_id_2', '==', '337');

coversations.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    doc.ref.delete();
  });
});

If (401 and 337) can be in both user_id_1 and user_id_2, you can do a simple logic to check if there's an occurrence on the field. See sample code below:

const coversations = db.collection('conversations');

coversations.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    const n = ['401', '307'];
    if (n.includes(doc.data().user_uid_1) && n.includes(doc.data().user_uid_2)) {
      doc.ref.delete();
    }
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文