如何从firestore querysnapshot获取特定文档数据?

时间:2018-06-05 04:46:36

标签: firebase google-cloud-firestore google-cloud-functions

我在函数中获得了一个查询快照。 并希望将整个查询快照带到另一个函数(functionTwo)。 在functionTwo中,我想在querysnapshot WITHOUT forEach中获取特定文档。具体的文档可以通过不同的案例进行更改。

ref_serial_setting.get()
    .then(querysnapshot => {
      return functionTwo(querysnapshot)
    })
    .catch(err => {
      console.log('Error getting documents', err)
    })


let functionTwo = (querysnapshot) => {
  // getting value

  const dataKey_1 = "dataKey_1"

  // Tried 1
  const value = querysnapshot.doc(dataKey_1).data()

  // Tried 2
  const value = querysnapshot.document(dataKey_1).data()

  // Tried 3 (Put 'data_name': dataKey_1 in that doc)
  const value = querysnapshot.where('data_name', '==', dataKey_1).data()
}

结果是所有这些尝试都不是一个功能。

如何从querysnapshot获取特定文档数据?

有没有简单的方法可以将查询快照更改为JSON?

3 个答案:

答案 0 :(得分:6)

您可以使用docs的{​​{1}}属性获取文档快照的数组。之后,您将不得不循环获取文档快照的数据以查找您的文档。

QuerySnapshot

如果您实际上不需要完整const docSnapshots = querysnapshot.docs; for (var i in docSnapshots) { const doc = docSnapshots[i].data(); // Check for your document data here and break when you find it } ,则可以使用QuerySnapshot函数调用之前应用过滤器查询对象上的where

get

答案 1 :(得分:0)

SqlCommand cmd = new SqlCommand("Select * from users Where username = @username and password = @password", sqlcon);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@username", txtUsername.Text);
cmd.Parameters.AddWithValue("@password", txtPassword.Text);

SqlDataReader dr = cmd.ExecuteReader();

sqlcon.Open();
cmd.ExecuteNonQuery();
sqlcon.Close();

if (dr.HasRows)
{
    Main objMain = new Main();
    this.Hide();
    objMain.Show();
}
else
{
    MessageBox.Show("Check your username and password");
}

来自https://firebase.google.com/docs/firestore/query-data/get-data

答案 2 :(得分:0)

有一种简便的方法,每个StyleSheet都有一个属性contentContainerStyle={styles.contentContainer},该属性返回一个QuerySnapshot的数组。请参阅QuerySnapshot文档。

docs