【问题标题】:Not getting firestore document field data even though document has couple of fields即使文档有几个字段,也没有获取 firestore 文档字段数据
【发布时间】:2019-04-19 09:24:55
【问题描述】:

我已通过以下 nodejs 脚本将 firebase 实时数据迁移到 cloud firestore:

var fireastoreDB = admin.firestore();
var db = admin.database();
var ref = db.ref("/users");
let items = [];
ref.once("value", function(snapshot) {
 let collectionRef =  fireastoreDB.collection("users");
  snapshot.forEach(item => {
  collectionRef.doc(item.key).set(item.val());
});

我将数据放入 Cloud Firestore。现在我必须在 nodejs 中为这些数据实现 REST API。

var docusRef = db.collection("users").get().then( (data) => {
console.log(data);
data.forEach( item => {
let docObj =  item.data();
console.log(docObj['Coins']);
console.log(docObj['Coins']['Total Coins']);
});
});

从这段代码中,我可以获取所有文档字段数据。但是当我尝试直接获取特定文档数据时,我得到了 undefined(exists: false) 但数据在此文档下。

var db = admin.firestore();
var docusRef = db.collection("users").doc('Atest - 12345')
docusRef.get().then(function (col) {
  var name=col.get("Coins");
  console.log(name); // undefined & exists: false
});

当我从 firebase 控制台手动添加文档/字段时,我正在获取数据。 这是迁移数据的问题还是什么? 谁能找到问题。

【问题讨论】:

标签: node.js firebase google-cloud-firestore firebase-admin


【解决方案1】:

get() 方法返回“用包含当前文档内容的DocumentSnapshot 解析的 Promise”。因此必须使用DocumentSnapshotdata()方法来获取文档的字段,如下:

docusRef.get().then(function (col) {
  var name=col.data().Coins;
  console.log(name); 
});

【讨论】:

  • 知道了。谢谢。
  • @pallavidumpathi 很高兴我能帮助你!您可以通过单击答案旁边的复选标记将其从灰色切换为绿色来接受我的答案,请参阅stackoverflow.com/help/someone-answers。感谢并欢迎使用 Stack Overflow!
  • 是的,标记为@Renaud Tarnec,刚才我在 bigquery 上又发布了一个问题。你能看看这个stackoverflow.com/questions/55806105/… - 我在将firestore数据导出到bigquery时遇到问题。你能帮帮我吗?
猜你喜欢
  • 2020-01-09
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 2021-06-24
相关资源
最近更新 更多