Есть ли способ скопировать значение документа в другой, не тянет данные и не отправляет обратно? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть 2 документа posts и postDrafts.В какой-то момент я хочу опубликовать документ из 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 голосов
/ 15 ноября 2018

Есть ли способ скопировать значение документа в другое, не извлекая данные и не отправляя обратно

Нет, нет.Вам нужно сначала получить документ, чтобы иметь возможность написать его обратно.Невозможно просто получить свойство в документе и записать его в другой документ, не делая этого.Нет никаких разрешений на уровне поля или доступа к документу.Это весь документ или ничего.

Так что, если вы хотите прочитать поле {body: "blah blah", вы получите весь документ, а не только свойство, которое вы записали, в другой документ.Таким образом, здесь задействованы две операции: чтение и запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...