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

时间:2018-11-15 18:19:04

标签: javascript firebase google-cloud-firestore

我有2个文档postspostDrafts。在某些时候,我想将文档从postDraft发布到post。 内容类似于{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”

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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