Javascript 如何使用不同数据库层次结构中的函数将新参数写入firebase数据库?
小结:需要一种方法来搜索firebase数据库并将匹配的对象附加到新元素。 Firebase数据库结构如下所示:Javascript 如何使用不同数据库层次结构中的函数将新参数写入firebase数据库?,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,小结:需要一种方法来搜索firebase数据库并将匹配的对象附加到新元素。 Firebase数据库结构如下所示: { "Message2" : { "-KnSKLk3dhRf8MgjZAnO" : { "var1" : "value1", "var2" : "value2", "endDate1" : "Click to enter", "searchvar" : "Uhrts", "name" : "name",
{
"Message2" : {
"-KnSKLk3dhRf8MgjZAnO" : {
"var1" : "value1",
"var2" : "value2",
"endDate1" : "Click to enter",
"searchvar" : "Uhrts",
"name" : "name",
"numbervar" : "5",
"startDate1" : "Click to enter",
"varName" : "Neptune"
},
"-KnSKLvtA3X3NsoErfa-" : {
"var1" : "value2",
"var2" : "value3",
"endDate1" : "Click to enter",
"searchvar" : "qwe",
"name" : "name",
"numbervar" : "5",
"startDate1" : "Click to enter",
"varName" : "Neptune"
}
}
}
最终目标是在根节点(Messages2)的每个元素中搜索字符串(比如“Uhrts”),如果字符串存在,则向Messages2的所有子级添加一个新参数,该子级与Uhrts搜索匹配(比如-KnSKLk3dhRf8MgjZAnO,…等等)
这是我在firebase中部署的index.js代码:
'use strict';
const functions = require('firebase-functions');
exports.qwerty = functions.database.ref('/Messages2').onWrite(event => {
const message = event.data.val();
if (message) {
var string = new RegExp("Uhrts");
var upper;
var lower;
for (upper in message){
for (lower in message[upper]){
if (string.test(message[upper][lower])) {
message[upper].cost = "1500000";
return event.data.adminRef.update({
});
}
}
}
}
});
只要满足这里描述的最终目标,我就可以更改数据库结构或代码。您的问题中包含了JSON树的图片。请将其替换为实际的JSON文本,您可以通过单击中的导出JSON链接轻松获取。将JSON作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事。添加JSON作为文本。同时在开头写一个总结,以防有用@Frank van Puffelen,既然你是firebase团队的成员,如果stack不是回答这个问题的最佳地点,还有其他地方我可以试着得到回答吗?我已经在firebase bug和功能请求页面中提出了功能请求。任何其他建议?只要在
/Messages2
下写入任何数据,就会触发您当前的功能。因此,每当在此处添加新节点时,都会重新处理所有现有数据。这真的是您的意图吗?数据库触发的函数应该返回一个承诺,该承诺在其工作完成时解析。您当前的代码可能会返回多个承诺。我建议你在,和中阅读这篇文章。