我是Cloud Firestore的新手(我们都不是吗?)我已经使用Node.js中的admin SDK将一些数据添加到我的数据库中。它显示在控制台上,但在文档中显示"此文档不存在,它不会出现在查询或快照中。"我不确定为什么会这样?这是一个屏幕截图:
答案 0 :(得分:2)
要实现的关键是,仅仅因为您在root_collection > root_doc > sub_collection > sub_doc
创建文档并不意味着root_collection > root_doc
实际上存在文档。
因此,为了向您显示... > Events > 10-12-2017 > Phase Data
下的文档,控制台显示10-12-2017
就好像它是一个文档,但它让您知道该位置实际上没有文档。因此,如果您对... > Events
下的文档进行查询,10-12-2017
将不会显示。
答案 1 :(得分:0)
我认为这是大家都在寻找的答案: 当您创建类似这样的文档时:
<div class="container">
<div>
<h1>TEST</h1>
</div>
<div class="simple-table ">
<div class="simple-table-title">Title:</div>
<table>
<thead>
<tr>
<td>Column 1:</td>
<td>Column 2:</td>
<td>Column 3:</td>
<td>Long Column:</td>
<td>Long Column:</td>
<td>Very Long Column:</td>
</tr>
</thead>
<tbody>
<tr>
<td>100</td>
<td>10%</td>
<td>All</td>
<td>THIS IS A LONG TEXT</td>
<td>THIS IS A LONG TEXT</td>
<td>THIS IS A VERY VERY LONG LONG TEXT</td>
</tr>
</tbody>
</table>
</div>
</div>
您没有使用自动生成的ID为该文档创建实际位置。 而是这样添加一个空字段:
let ref = Firestore.firestore().collection("users").document().collection("data")
我尝试了一下,现在可以正常工作了。
答案 2 :(得分:0)
基于@ rithvik-ravikumar的建议,使用Firestore批处理(Swift版本):
首先,我们在/users/:id/issues
下创建新文档,并更新updatedAt
上的属性/users/:id
以使其“可查询”。
func saveInBatch() {
let db = Firestore.firestore()
var issueReportData: [String: Any] = [:] // Some data you want to store.
let batch = db.batch()
let userDocRef = db.collection("users").document("_firebase_user_id_goes_here_")
let issueDocRef = userDocRef.collection("issues").document() // This will be a new document.
// This is needed in order to make document "queryable".
batch.setData(["updatedAt": FieldValue.serverTimestamp()], forDocument: userDocRef)
batch.setData(issueReportData, forDocument: issueDocRef)
batch.commit() { err in
if let err = err {
print("Error writing batch \(err)")
} else {
print("Batch write succeeded.")
}
}
}
现在,我们可以在/users
路径下获取文档。
func fetchUsers() {
let db = Firestore.firestore()
db.collection("users").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
debugPrint("Found \(querySnapshot!.documents.count) documents")
for document in querySnapshot!.documents {
let data = document.data()
print("\(document.documentID) => \(data)")
}
}
}
}