Я новичок в 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})
, но при этом были стерты все данные и добавлена только временная метка, отмеченная закладкой.
Спасибо за любой совет или заверения, я на правильном пути (или нет)