FireStore: Как объединить данные отметки времени с существующим документом? - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в FireStore и создаю приложение, в котором пользователи могут создавать закладки для фотодокументов и показывать их в своей личной ленте. Это прекрасно работает. Теперь я хочу иметь возможность сортировать закладки по дате добавления в закладки, когда пользователь просматривает свой личный канал (метод orderBy). Таким образом, чтобы это произошло, я решил добавить значение временной метки в тот момент, когда пользователь делает закладку на документ.

Вот моя попытка. Я хотел проверить с сообществом, хороший ли это способ сделать это. Меня беспокоит избыточность и дополнительные записи.

async addDocToFeed({state}, doc) {
 try {
          const feedRef = this.$fireStore
            .collection(`users/${state.userProfile.uid}/feed`)
            .doc(doc.id) 

          await feedRef.set(doc) < --- copy record to user's feed collection (see json sample below)
          const bookmark = this.$fireStore
            .collection(`users/${state.userProfile.uid}/feed`)
            .doc(doc.id)
          bookmark.update({
            bookmarked: this.$fireStoreObj.FieldValue.serverTimestamp()
          })
          // })
          console.log('doc bookmarked')
        } catch (error) {
          console.error('error updating doc', error)
        }
}

Пример JSON из doc перед добавлением метки времени:

{"id":"1KecNCqYlcVRjq4BLCbZ","comments":"__vue_devtool_nan__","url":"https://firebasestorage.googleapis.com/v0/b/vue-photoapp-api.appspot.com/o/photos%2F0.jpg?alt=media&token=ee23b95b-b5d8-4abe-b1b9-e335d591b413","tags":["router","Texas"],"filename":"0.jpg","description":"test with new router setup","createdAt":{"seconds":1596020630,"nanoseconds":473000000},"title":"test with new router setup","status":"Unsolved","userId":"SvuTxDtHXJdBHImNQWByqnO3F2U2","displayName":"MrRouter"}

Я пытался сделать:

await feedRef.set({doc, bookmarked: this.$fireStoreObj.FieldValue.serverTimestamp()}, {merge: true})

, но при этом были стерты все данные и добавлена ​​только временная метка, отмеченная закладкой.

Спасибо за любой совет или заверения, я на правильном пути (или нет)

1 Ответ

0 голосов
/ 06 августа 2020
  this    
      .$fireStore
      .collection(users/${state.userProfile.uid}/feed)
      .doc(doc.id);
      .set({
          bookmarked: Date.now()
      }, {merge: true})
      .then(() => {
          resolve(true);
      }).catch((error) => {
          reject(error)
      })

Это должно работать.

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