此文档不存在,它不会出现在查询或快照中?云Firestore

时间:2017-10-19 00:33:45

标签: node.js database nosql google-admin-sdk google-cloud-firestore

我是Cloud Firestore的新手(我们都不是吗?)我已经使用Node.js中的admin SDK将一些数据添加到我的数据库中。它显示在控制台上,但在文档中显示"此文档不存在,它不会出现在查询或快照中。"我不确定为什么会这样?这是一个屏幕截图:enter image description here

3 个答案:

答案 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)")
         }
      }
   }
}