一切工作正常,但我想使用与 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;
最佳答案
您的问题是每次保存数据时都会调用push()
。 push()
方法与 set()
不同,它创建一个唯一的 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 存储在第二个函数中时,不要忘记同时引用您要将其保存到的节点。
关于javascript - 如何使用如图所示的相同表创建 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54062219/