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