我知道Realtime Database
我可以在push ID
之前添加 DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference();
String challengeId=databaseReference.push().getKey();
,如下所示:
Cloud Firestore?
然后我可以使用此ID添加它。
我是否也可以在$(document).ready(function() {
alert('aaa');
$(document).on("click", ".items-layout > div", function() {
var $this = $(this);
$this.addClass('hover-effect').off("click");
setTimeout(function() {
$this.removeClass('hover-effect');
alert('yolo');
}, 1000);
});
答案 0 :(得分:65)
documentation中介绍了这一点。请参阅添加文档部分的最后一段。
DocumentReference ref = db.collection("my_collection").document();
String myId = ref.getId();
答案 1 :(得分:16)
const db = firebase.firestore();
const ref = db.collection('your_collection_name').doc();
const id = ref.id;
答案 2 :(得分:11)
projectsRef 是firestore collection ref。
data 是您要上传到firestore的具有键值的对象。
afs 是在构造函数
中注入的angularfirestore模块您可以通过以下方式执行此操作(代码适用于AngularFire2 v5,类似于任何其他版本的firebase SDK,例如web,节点等。)
Task.Run
这将在Collection中生成一个名为projectsRef的新文档,其id为pushKey,该文档的pushKey属性与文档的id相同
请记住,set也会删除任何现有数据
实际上.add()和.doc()。set()与.add()相同,id是自动生成的, 使用.doc()。set()可以提供自定义ID。
答案 3 :(得分:3)
IDK(如果有帮助的话),但是我想从Firestore数据库中获取文档的ID,即已经输入到控制台中的数据。
我想要一种简单的方式来快速访问该ID,所以我只是将其添加到文档对象中,如下所示:
const querySnapshot = await db.collection("catalog").get();
querySnapshot.forEach(category => {
const categoryData = category.data();
categoryData.id = category.id;
现在,我可以像访问其他任何属性一样访问该id
。
IDK为什么id
首先不只是.data()
的一部分!
答案 4 :(得分:2)
不幸的是,这不起作用:
let db = Firestore.firestore()
let documentID = db.collection(“myCollection”).addDocument(data: ["field": 0]).documentID
db.collection(“myOtherCollection”).document(documentID).setData(["field": 0])
它不起作用,因为第二条语句在documentID完成获取文档ID之前执行。因此,在设置下一个文档之前,您必须等待documentID完成加载:
let db = Firestore.firestore()
var documentRef: DocumentReference?
documentRef = db.collection(“myCollection”).addDocument(data: ["field": 0]) { error in
guard error == nil, let documentID = documentRef?.documentID else { return }
db.collection(“myOtherCollection”).document(documentID).setData(["field": 0])
}
这不是最漂亮的,但这是完成您所要询问的唯一方法。这段代码在Swift 5
中。
答案 5 :(得分:1)
对于node.js运行时
const documentRef = admin.firestore()
.collection("pets")
.doc()
await admin.firestore()
.collection("pets")
.doc(documentRef.id)
.set({ id: documentRef.id })
这将创建一个具有随机ID的新文档,然后将文档内容设置为
{ id: new_document_id }
希望可以很好地解释其工作原理
答案 6 :(得分:0)
这对我有用。我在同一事务中更新文档。我创建了文档,并立即使用文档ID更新了文档。
let db = Firestore.firestore().collection(“cities”)
var ref: DocumentReference? = nil
ref = db.addDocument(data: [
“Name” : “Los Angeles”,
“State: : “CA”
]) { err in
if let err = err {
print("Error adding document: \(err)")
} else {
print("Document added with ID: \(ref!.documentID)")
db.document(ref!.documentID).updateData([
“myDocumentId” : "\(ref!.documentID)"
]) { err in
if let err = err {
print("Error updating document: \(err)")
} else {
print("Document successfully updated")
}
}
}
}
很高兴找到一种更清洁的方式来做到这一点,但在那之前这对我有用。
答案 7 :(得分:0)
在飞镖中,您可以使用:
`var itemRef = Firestore.instance.collection("user")
var doc = itemRef.document().documentID;
await itemRef.document(doc).setData(data).then((val){
print("document Id ----------------------: $doc");
});`
答案 8 :(得分:0)
在节点中
var id = db.collection("collection name").doc().id;
答案 9 :(得分:0)
最简单和更新的方法(2019)是对主要问题的正确答案:
“是否可以在添加ID之前获取ID?”
// Generate "locally" a new document in a collection
const document = yourFirestoreDb.collection('collectionName').doc();
// Get the new document Id
const documentUuid = document.id;
// Sets the new document (object that you want to insert) with its uuid as property
const response = await document.set({
...yourObjectToInsert,
uuid: documentUuid
});
答案 10 :(得分:0)
要在保存为Python之后获取ID:
doc_ref = db.collection('promotions').add(data)
return doc_ref[1].id
答案 11 :(得分:0)
我们可以在文档中找到<ul class="three">
<li class="unordered-list A">A</li>
<li class="unordered-list B">B</li>
<li class="unordered-list C">C</li>
<li class="unordered-list D">D</li>
<li class="unordered-list E">E</li>
<li class="unordered-list B-1">B-1</li>
<li class="unordered-list B-2">B-2</li>
<li class="unordered-list B-3">B-3</li>
</ul>
方法。他们将生成新的ID,并在此基础上创建新的ID。然后使用doc()
方法设置新数据。
set()
答案 12 :(得分:0)
您可以使用辅助方法生成 Firestore-ish ID,然后调用 collection("name").doc(myID).set(dataObj)
而不是 collection("name").add(dataObj)
。如果 ID 不存在,Firebase 将自动创建文档。
辅助方法:
/**
* generates a string, e.g. used as document ID
* @param {number} len length of random string, default with firebase is 20
* @return {string} a strich such as tyCiv5FpxRexG9JX4wjP
*/
function getDocumentId (len = 20): string {
const list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
let res = "";
for (let i = 0; i < len; i++) {
const rnd = Math.floor(Math.random() * list.length);
res = res + list.charAt(rnd);
}
return res;
}
用法:const myId = getDocumentId()
。