В Firebase при использовании push() Как получить уникальный идентификатор и сохранить в моей базе данных
Я отправляю данные в FireBase, но я также хочу сохранить уникальный идентификатор в моей базе данных. Может кто-нибудь сказать мне, как подтолкнуть данные с уникальным идентификатором.
я пытаюсь вот так
writeUserData() {
var key= ref.push().key();
var newData={
id: key,
websiteName: this.webname.value,
username: this.username.value,
password : this.password.value,
websiteLink : this.weblink.value
}
firebase.database().ref().push(newData);
}
ошибка "ReferenceError: ссылка не определена"
Ответы
Ответ 1
Вы можете получить ключ, используя функцию key()
любого объекта ref
Есть два способа вызвать push
в SDK Firebase JavaScript.
-
с помощью push(newObject)
. Это приведет к созданию нового идентификатора push и записи данных в местоположении с этим идентификатором.
-
используя push()
. Это создаст новый идентификатор push и вернет ссылку на местоположение с этим идентификатором. Это чистая клиентская сторона операции.
Зная № 2, вы можете легко получить новую клиентскую идентификацию push id с:
var newKey = ref.push().key();
Затем вы можете использовать этот ключ в своем многоуровневом обновлении.
fooobar.com/questions/358891/...
Если вы вызываете метод Firebase push()
без аргументов, это чистая клиентская операция.
var newRef = ref.push(); // this does *not* call the server
Затем вы можете добавить key()
нового ref к вашему элементу:
var newItem = {
name: 'anauleau'
id: newRef.key()
};
И напишите элемент в новом месте:
newRef.set(newItem);
fooobar.com/questions/358892/...
в вашем случае:
writeUserData() {
var myRef = firebase.database().ref().push();
var key = myRef.key();
var newData={
id: key,
Website_Name: this.web_name.value,
Username: this.username.value,
Password : this.password.value,
website_link : this.web_link.value
}
myRef.push(newData);
}
Ответ 2
function writeNewPost(uid, username, picture, title, body) {
// A post entry.
var postData = {
author: username,
uid: uid,
body: body,
title: title,
starCount: 0,
authorPic: picture
};
// Get a key for a new Post.
var newPostKey = firebase.database().ref().child('posts').push().key;
// Write the new post data simultaneously in the posts list and the user post list.
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
}
Ответ 3
Вы можете получить последний вставленный идентификатор элемента, используя Promise, как это
let postRef = firebase.database().ref('/post');
postRef.push({ 'name': 'Test Value' })
.then(res => {
console.log(res.getKey()) // this will return you ID
})
.catch(error => console.log(error));
Ответ 4
Похоже, теперь .push() всегда возвращает Observable. При применении решений выше я имел следующую ошибку: "Тип" String "не имеет совместимых сигнатур вызовов".
Сказав это, я ссылаюсь на то, что работало в моем случае для этой новой версии:
Тип 'String' не имеет совместимых сигнатур вызовов
Ответ 5
Это сработало для меня:
var insertData = firebase.database().ref().push(newData);
var insertedKey = insertData.getKey(); // last inserted key
Смотрите здесь: Сохранение данных с помощью firebase.