Как сказано в комментариях, первым аргументом для метода update
должен быть объект, содержащий дочерние элементы для замены.
У вас есть два решения:
1 / Передача реквизита в виде строки (Не самая элегантная .... но если вы действительно хотите)
Вы передаете только одну строку в свой компонент следующим образом:
<upload-component path="/news/image"></upload-component>
и в компоненте:
props: ['path'],
....
methods: {
saveToDb: function (imageUrl) {
const pathElems = this.path.split('/');
const ref = firebase.database().ref(pathElems[1]);
const imageObj = {};
imageObj[pathElems[2]] = imageURL; //Using the square brackets method
ref.update(imageObj);
}
}
2 / Передача реквизита как объекта
См. Документ Vue.js https://vuejs.org/v2/guide/components-props.html#Passing-the-Properties-of-an-Object
imageProps: {
node: '/news',
key: 'image'
}
тогда
<upload-component v-bind="imageProps"></upload-component>
и в компоненте:
methods: {
saveToDb: function (imageUrl) {
const ref = firebase.database().ref(this.node);
const imageObj = {};
imageObj[this.key] = imageURL;
ref.update(imageObj);
}
}