![](/img/trans.png)
[英]How to push new data into firebase realtime database using cloud functions?
[英]How to query Firebase Realtime database using Google Cloud functions
我一直试图解决这个问题好几天...非常感谢任何帮助。
我正在尝试构建一个从Pub / sub主题('ETACheck')触发的Firebase云功能。 触发部分工作正常。 调用云功能时,它会扫描Firebase数据库,查找“ECT”键等于''的所有记录。 以下是数据的组织方式:
这是代码片段:
exports.CheckETAResponse = functions.pubsub.topic('ETACheck').onPublish((message, context) => {
console.log('The function was triggered at ', context.timestamp);
console.log('The unique ID for the event is', context.eventId);
var db = admin.database();
var ref = db.ref('{company}/Requisitions/{store}');
return ref.orderByChild('ECT').equalTo('').on('value')
.then((snapshot) => {
if (snapshot !== null) {
const data = snapshot.val();
console.log('Data',data);
}
else {
console.log('Snapshot is null');
}
return null;
})
.catch((error) => console.log('Error',error))
});
来自Firebase的错误(data = null):
我将查询更改为“.on('child_added'),我收到以下错误:
db.ref('{company}/Requisitions/{store}')
中的那些类型的通配符只能在Cloud Functions声明中使用,而不能在数据库的其他路径中使用。 Firebase查询适用于子节点的平面列表模型。 无法在具有ECT == ""
Requisitions
ECT == ""
下找到所有嵌套子节点。 您可以在Requisitions/001
下搜索,但不能在所有Requisitions/*
下搜索。
考虑添加允许此类查找的反向索引:
EmptyECTs: {
"Requestion/001/-Lhv...": true
}
这使您可以轻松读取节点。
有关详细信息,请参阅:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.