我已通过以下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());
});
我将数据存入了云存储。现在,我必须在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']);
});
});
从此代码中,我能够获取所有文档字段数据。但是,当我尝试直接获取特定的文档数据时,却得到了未定义(存在: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控制台手动添加文档/字段时,我正在获取数据。 迁移的数据是这个问题还是什么? 任何人都可以找到问题。
答案 0 :(得分:1)
get()
方法返回“用包含当前文档内容的DocumentSnapshot
解析的Promise”。因此,您必须使用DocumentSnapshot
的{{3}}方法来获取文档的字段,如下所示:
docusRef.get().then(function (col) {
var name=col.data().Coins;
console.log(name);
});