首页 > 解决方案 > 有没有一种方法可以将 doc 值复制到另一个而不提取数据并发送回

问题描述

我有 2 个文档postspostDrafts. 在某些时候,我想将文档postDraftpost. 内容类似于{body: "blah blah"}.

因此,简单的解决方案是提取postDraft内容,然后发送回posts文档。这是我的代码。

   export const publishDraftById = (postId) => async dispatch => {
      return new Promise((resolve, reject) => {
        postDraftsRef.doc(postId).get()
          .then(doc => {
            if (!doc.exists) {
              reject('No such document!');
            } else {
              const draft = doc.data();
              postsRef.doc(postId).update({
                body: draft.body,
                date_modified: new Date()
              });
              resolve();
            }
          })
          .catch((err) => {
            reject(err);
            console.log('Error getting documents', err);
          });
      })
    };

但我真正认为有用的是一种方法来做这样的元代码

“分配帖子(postid).body = postDraft(postid).body”

我能以某种方式解决这个问题吗?

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


有没有一种方法可以将 doc 值复制到另一个而不提取数据并发送回

不,那里没有。您需要先获取文档才能将其写回。如果不这样做,就无法简单地获取文档中的属性并将其写入另一个文档中。没有字段级权限或对文档的访问。这是整个文档,或者什么都没有。

因此,如果您想读取一个字段{body: "blah blah",那么您将获得整个文档,而不仅仅是您将其写入另一个文档的属性。所以涉及到两个操作,一个读操作和一个写操作。


推荐阅读