繁体   English   中英

如何在 Firebase 中获取按键?

[英]How to get push key in firebase?

我想在将数据推送到 Firebase 数据库时生成密钥。 我想用我自己的功能来处理它们,

所以问题是当用户填写表格时他将数据发送到我们的实时数据库,该数据中包含一些图像(可选),我不需要让数据库中的图像对象为空,那么如何处理这个,当用户需要发送图像时,我想将此图像保存在同一订单中,而不是新订单中。

节点

节点

这是我的功能

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);
        }
    });
};

这对我来说似乎很好用:

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

实时 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..")
    });
}

来自任何 Firebase 快照ref的推送 ID 都在ref.name()中。

我知道作者创建帖子已经有一段时间了,但也许有人会发现它很有用。

上面的答案有点不对,因为,例如,after: newChildRef

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

var newChildRef = ref.push({ firstChild: true });

newChildRef <--- 承诺

ref = rdb.ref('name_of_your_ref');
    var childRef = ref.push({
        IdUser: currentUserId,
        ProductCategory: pCategory,
        ProductDescription: pDesc,
        ProductId: pId,
        ProductName: pName,
        ProductPrice: pPrice,
        ProductQuantity: pQuan
    }).catch(err => console.log(err.message));
    childRef.then(item => {
        ref.child(item.key).update({
            IdKey: item.key
        }).then(() => history.push('/delivery/basket'));
    });

你好,马修

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM