У меня есть документ в Firebase Firestore, похожий на приведенный ниже. Суть в том, что у меня есть массив с именем items
с объектами внутри него:
{
name: 'Foo',
items: [
{
name: 'Bar',
meta: {
image: 'xyz.png',
description: 'hello world'
}
},
{
name: 'Rawr',
meta: {
image: 'abc.png',
description: 'hello tom'
}
}
]
}
Я пытаюсь обновить поле внутри массива элементов под мета-объектом. Например items [0] .meta.description из hello world в hello bar
Сначала я попытался сделать это:
const key = `items.${this.state.index}.meta.description`
const property = `hello bar`;
this.design.update({
[key]: property
})
.then(() => {
console.log("done")
})
.catch(function(error) {
message.error(error.message);
});
Это, похоже, не сработало, поскольку удалило все в индексе элемента, который я хотел изменить, и просто сохранило описание под мета-объектом
Сейчас я пробую следующее, которое в основном переписывает весь мета-объект с новыми данными
const key = `items.${this.state.index}.meta`
const property = e.target.value;
let meta = this.state.meta;
meta[e.target.id] = property;
this.design.update({
[key]: meta
})
.then(() => {
this.setState({
[key]: meta
})
})
.catch(function(error) {
message.error(error.message);
});
К сожалению, это, кажется, превращает весь мой массив элементов в объект, который выглядит примерно так:
{
name: 'Foo',
items: {
0: {
name: 'Bar',
meta: {
image: 'xyz.png',
description: 'hello world'
}
},
1: {
name: 'Rawr',
meta: {
image: 'abc.png',
description: 'hello tom'
}
}
}
}
Есть идеи, как мне просто обновить контент, который я хочу?