从Firestore数据库中具有文档ID的集合文档中检索数据

时间:2019-04-07 18:53:16

标签: javascript firebase google-cloud-firestore

我想通过实现Firebase友好的聊天应用程序来制作带有聊天室的聊天应用程序。我想从消息收集的“ rooma” documentid获取所有信息。但是我无法从ID为“ rooma”的文档中获取信息,但是我可以从“消息”集合中访问所有信息。 我的代码是:

function loadMessages() {
  // Create the query to load the last 12 messages and listen for new ones.
  var query = firebase.firestore()
                  .collection('messages').where(firebase.firestore.FieldPath.documentId(), '==', 'rooma').get()
                  .orderBy('timestamp', 'desc')
                  .limit(12);

  // Start listening to the query.
  query.onSnapshot(function(snapshot) {
    snapshot.docChanges().forEach(function(change) {
      if (change.type === 'removed') {
        deleteMessage(change.doc.id);
      } else {
        var message = change.doc.data();
        displayMessage(change.doc.id, message.timestamp, message.name,
                       message.text, message.profilePicUrl, message.imageUrl);
      }
    });
  });
}

我的数据库结构是: Imgur

1 个答案:

答案 0 :(得分:0)

如果要获取“带有ID'rooma'的文档”的数据,请按照documentation进行以下操作:

var docRef = db.collection("messages").doc("rooma");

docRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

如果要使用onSnapshot(),为了“ 收听到文档”,只需按照documentation进行以下操作:

var docRef = db.collection("messages").doc("rooma");
docRef.onSnapshot(function(doc) {
     console.log("Current data: ", doc.data());
});