Как получить кнопку в Firebase? - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу получить ключ, генерируемый при отправке данных в базу данных Firebase. Я хочу обработать их с помощью своей собственной функции,

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

Node

Node

Вот моя функция

handleOrder = () => {
    const { nameOfProblem, description, userId, imageOfPrblem, providerId } = this.state;
    const PushData = firebase.database().ref("request/" + providerId + "/" + userId + "/orders/");
    const ref = firebase.storage().ref("users/" + userId + "/UserImageOrders/" + path);
    let file = imageOfPrblem.uri;
    const path = "img_" + imageOfPrblem.fileName;
    var newOrderRef = PushData.push({
        nameOfProblem: nameOfProblem,
        description: description,
    });
    if (file) {
        let keyG = newOrderRef.key; // Key Generated with .push()
        PushData.child(keyG).update({ // didn't updated the key generated just add new element with new key !!
            imageOfPrblem: imageOfPrblem
        });
        ref.put(file).then(() => {
            console.log("File uploaded..")
        });
    }
}

handleImages = () => {
    const options = {
        title: "Select Images!",
        storageOptions: {
            skipBackup: true,
            path: "images"
        }
    };
    ImagePicker.showImagePicker(options, response => {
        console.log("Response = ", response);
        if (response.uri) {
            this.setState({ imageOfPrblem: response });
        }
        if (response.didCancel) {
            console.log("User cancelled image picker");
        } else if (response.error) {
            console.log("ImagePicker Error: ", response.error);
        } else if (response.customButton) {
            console.log("User tapped custom button: ", response.customButton);
            alert(response.customButton);
        }
    });
};

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Мне кажется, это нормально работает:

var ref = firebase.database().ref("/55912103");

var newChildRef = ref.push({ firstChild: true });
console.log("new key: "+newChildRef.key);
ref.child(newChildRef.key).update({ secondChild: true });

После запуска этого кода я получаю этот JSON в новом дочернем элементе, ключ которого заносится в журнал:

"-LdgLWu_wBNNicFlPDGj" : {
  "firstChild" : true,
  "secondChild" : true
}

Демонстрация в реальном времени: https://jsbin.com/hovoleh/edit?js,console

Live JSON: https://stackoverflow.firebaseio.com/55912103.json?print=pretty


Обновление: если вы просто хотите записать как существующие, так и новые данные в новое расположение:

var newOrderRef = PushData.push({
    nameOfProblem: nameOfProblem,
    description: description,
});
if (file) {
    let keyG = newOrderRef.key; // Key Generated with .push()
    PushData.child(keyG).update({
        nameOfProblem: nameOfProblem,
        description: description,
        imageOfPrblem: imageOfPrblem
    });
    ref.put(file).then(() => {
        console.log("File uploaded..")
    });
}
0 голосов
/ 30 апреля 2019

Идентификатор push из любого снимка Firebase ref находится в ref.name().

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