【发布时间】:2018-01-24 12:28:54
【问题描述】:
处理节点脚本以在提供 json 文件中列出的站点时自动调用 Google 的 pagespeed api。
{
"1" : "https://bitbucket.org",
"2" : "https://www.catswhocode.com/blog/"
}
目的是将 api 调用的结果与顶级 url 节点一起添加到 firebase json 数据库,以存储输入的 sitestats 的 firebase 密钥。这是我需要的示例 firebase 数据结构。
sites
-KrehhWxld7XlKCuFSHRY
stats { ... }
url: "https://bitbucket.org"
-KrehhXAWlYdjAOA9sd95
stats { ... }
url: "https://stackoverflow.com"
urls :
393957be871e209a76e0dc5df1f526ec : -KrehhWxld7XlKCuFSHRY
7f4c919540be6ec81cd37d9e61da6c37 : -KrehhXAWlYdjAOA9sd95
在承诺中,我正在为 firebase json 数据库中的节点添加参考。
Promise.all(allRes).then( function( values ) {
var ref = db.ref();
var sitesRef = ref.child("sites");
var urlsRef = ref.child("urls");
var psiresults = {};
SitesArray.map(function (sites, index) {
psiresults[sites] = values[index]
desktopStats = values[index].desktopStats;
mobileStats = values[index].mobileStats;
sitesRef.push({
url: sites,
stats: metricsResponse
});
sitesRef.once('child_added', function(snapshot) {
console.log(snapshot.key) //returns the last key only
});
});
当使用once('child_added', ... 时,它只会为最后一项添加到 url 顶级节点。但是,如果 on('child_added', ... 添加相同数据的多个副本和其他子项。每次将子节点添加到 sites 节点时,不确定如何将确切的子键添加到 urls 顶级节点。
【问题讨论】:
-
$uid/urls/$uid/$pid是什么?是userId? -
您的意思是 md5 字符串 393957be871e209a76e0dc5df1f526ec?使用站点 url 通过使用 md5 对它们进行散列来创建唯一键。
标签: json node.js firebase firebase-realtime-database promise