一切正常,但我想使用与URL相同的contactUs表制作url。我正在尝试在用户请求表单时显示表格中的所有内容。
var config = {
apiKey: "=================",
authDomain: "=================",
databaseURL: "================",
projectId: "===========",
storageBucket: "====================",
messagingSenderId: "====================="
};
//initialize firebase
firebase.initializeApp(config);
var database = firebase.database();
var storage = firebase.storage();
var firebaseContactsCollection = database.ref().child('ContactUs');
function submitOrder() {
var data = {
Name: $('#NameField').val(),
Email: $('#EmailsField').val(),
Subject: $('#SubjectField').val(),
Message: $('#MessageField').val(),
// file: $('#fileButton').val(),
};
firebaseContactsCollection.push(data);
};
var fileButton = document.getElementById('fileButton');
function URL(snap) {
var url = snap.downloadURL;
firebase.database().ref().child('ContactUs').push(url);
}
function img() {
var folder = this.files[0];
var getf = storage.ref("ContactUsImagesfiles/" + new Date());
getf.put(folder).then(URL);
}
fileButton.onchange = img;
答案 0 :(得分:1)
您的问题是,每次保存数据时您都在呼叫push()
。 push()
方法与set()
的不同之处在于,它创建一个唯一的ID,并将您的数据作为子ID存储在该ID下。 set()
只会将数据存储在您的引用中。
您可以call push()
without storing any data来获取唯一的ID。首先,将其作为全局变量或可以传递给函数的方法进行。
// Get a key for a your form
var firebaseContactsCollection = database.ref().child('ContactUs');
var newFormSubmissionKey = firebaseContactsCollection.push().key;
function submitOrder() {
// ...
firebaseContactsCollection.child(newFormSubmissionKey).set(data);
}
function URL(snap) {
var url = snap.downloadURL;
firebaseContactsCollection.child(newFormSubmissionKey).child("url").set(url);
}
在第二个函数中存储URL时,请不要忘记也要引用要保存到该节点的节点。