Не удается получить данные о полях документа Firestore, хотя в документе есть несколько полей - PullRequest
0 голосов
/ 19 апреля 2019

Я перенес данные в реальном времени из firebase в облачное хранилище с помощью приведенного ниже сценария nodejs:

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());
});

Я получил данные в облачный пожарный. Теперь я должен реализовать REST API для этих данных в nodejs.

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']);
});
});

из этого кода я могу получить все данные поля документов. Но когда я пытался получить конкретные данные документа напрямую, я получал неопределенный (существует: ложь), но данные были там под этим документом.

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, я получал данные. Это проблема с перенесенными данными или как? Может кто-нибудь, пожалуйста, найдите проблему.

1 Ответ

1 голос
/ 19 апреля 2019

Метод get() возвращает «Обещание, разрешенное с DocumentSnapshot, содержащим текущее содержимое документа».Поэтому вы должны использовать data() метод DocumentSnapshot, чтобы получить поля документа следующим образом:

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