Firebase / Vue - Сохранить дубликаты документов в одной коллекции - PullRequest
0 голосов
/ 15 апреля 2020

Я работаю над RPG в Vue. js и использую ее для изучения Firebase. Сейчас я пытаюсь поработать над системой инвентаризации для пользователей и столкнулся с проблемой: при попытке добавить новый элемент в инвентарь пользователей, он перезаписывает предыдущий элемент. Я думаю, проблема в том, что тогда элемент просто сохраняется как элемент: {name: "Sword", et c: "et c"}. Я не могу найти способ сохранить его с уникальным идентификатором, чтобы предотвратить его перезапись.

В настоящее время мой код выглядит следующим образом:

Я создаю элемент в моем представлении

<script>
import { mapGetters, mapActions } from 'vuex';

 export default {
name: 'Inventory',
data() {
  return {
    newItem: ''
  }
},
created() {
  this.fetchInventory();
  },
computed: mapGetters(['allInventory']),
methods: {
  ...mapActions(['fetchInventory']),
  ...mapActions(['addItem']),
  onDblClick(item) {
    const newItem = item;
    this.addItem(newItem);
  }
},

, а затем сохранить его

async addItem({ commit }, item) {
  var inventoryCollection = db.collection('inventory');
  var currentUser = firebase.auth().currentUser;
  inventoryCollection.doc(currentUser.uid).set({
    item
  }, { 
    merge: true 
  }).then(
    commit('newItem', item)
  );
},

, который сохраняет в Firestore примерно так

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

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