javascript - 如何更改新 Firebase onUpdate 或 onWrite 触发器中的值?
问题描述
在版本(<= v0.9.1)之前,可以设置这样的数据,现在不再......
event.data.ref.child('thisname').set("error");
编辑:这里没有提到二传手!仅如何从 onUpdate 或 onWrite https://firebase.google.com/docs/functions/beta-v1-diff接收值
解决办法贴在下面
解决方案
Firebase:(支持版本 1.0 或 2.0)
如果其他人在 onUpdate 或 onWrite 触发器内的云函数中更改/设置/更新值时遇到问题,那么这可能会帮助您...
首先这是我的数据树的样子:
"users" : {
"4h23u45h23509hu346034h5943h5" : {
"address" : "Backouse 2",
"city" : "Los Angeles",
"name" : "Joseph",
...
},
"23u4g24hg234h2ui342b34hi243n" : {
"address" : "Streetouse 13",
"city" : "Los Angeles",
"name" : "Stefan",
...
现在到云功能:
之前 (<= v0.9.1)
exports.updatingUser = functions.database.ref('/users/{pushId}')
.onUpdate(event => {
var address = event.data.child('address');
var city = event.data.child('city');
if (address.changed() || city.changed()) {
//generateThisname()
if (thisname == null) {
event.data.ref.child('name').set("error"); //Important Part
}
else {
event.data.ref.child('name').set(thisname); //Important Part
}
...
现在 (>= v1.0.0)
exports.updatingUser = functions.database.ref('/users/{pushId}')
.onUpdate((change, context) => {
var addressBefore = change.before.child('address').val();
var addressAfter = change.after.child('address').val();
var cityBefore = change.before.child('city').val();
var cityAfter = change.after.child('city').val();
//create reference from root to users/{pushId}/
var rootSnapshot = change.after.ref.parent.child(context.params.pushId)
if ((addressBefore !== addressAfter) || (cityBefore !== cityAfter)) {
//generateThisname()
if (thisname === null) {
rootSnapshot.child('name').set("error");
}
else {
rootSnapshot.child('name').set(thisname);
}
...
因此,在您设置值之前,您首先必须从数据库的根目录进行引用,然后一直到您的值并调用 set()
推荐阅读
- php - laravel MongoDB\BSON\UTCDateTime 类未找到
- javascript - JavaScript:如何通过三元条件的边缘情况
- python - AttributeError:“numpy.ndarray”对象没有属性“where”
- java - Kotlin 是否支持 AIDL?
- rust - 在 Rust 中,如何从 HashMap 的键创建 HashSet?
- javascript - 有没有办法在 JavaScript 中代理对属性的调用?
- google-bigquery - 如何从 CIDR BigQuery 获取 From & To IP 地址
- html - 我无法使用 HTML5 处理日期验证,reactjs 中的日期输入,
- c# - 如何在方法中设置可选参数
- html - 如何在 HTML/CSS 中的每个图像上制作带有文本的图像表?