【发布时间】:2017-06-22 03:31:10
【问题描述】:
我部署了一个简单的 firebase 功能,如下所示,我从谷歌开发人员那里学到了这个功能。它的简单目的是每当有人将 1111 写入数据库中的“值”字段时,将其更改为一些文本,但我的问题是此函数仅在创建数据字段时更改值一次,创建后它什么也不做,例如,如果用户输入 1111 它会改变,但如果用户输入 2222 然后 1111 没有任何反应。我应该在我的代码中更改什么?
提前致谢。
const functions = require('firebase-functions');
exports.sanitizePost=functions.database
.ref('/users/{uid}')
.onWrite(event =>{
const post =event.data.val()
if(post.sanitized){
return
}
post.sanitized=true
post.value=sanitize(post.value)
const promise = event.data.ref.set(post)
return promise
})
function sanitize(s){
var sanitizedText = s
sanitizedText = sanitizedText.replace("1111", "Congratz, you won!")
return sanitizedText
}
还在我的 java 客户端添加了一个函数,该函数在数据库更改后更改为 false。
我的java类
import android.content.Context;
import android.widget.Toast;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import static com.facebook.FacebookSdk.getApplicationContext;
public class database{
private DatabaseReference mDatabase;
private FirebaseDatabase database;
public void kullanicikontrol(String kullaniciadi,DatabaseReference mDatabase,String value){
mDatabase.child("users").child(kullaniciadi).child("value").setValue(value);
mDatabase.child("users").child(kullaniciadi).child("sanitized").setValue("false");
Context context = getApplicationContext();
CharSequence text = kullaniciadi;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
public void kullanicikontrol(String kullaniciadi,DatabaseReference mDatabase){
mDatabase.child("users").child(kullaniciadi).child("status").setValue("no");
}
}
【问题讨论】:
-
发布在
value和sanitized上执行写入的客户端代码。 -
@BobSnyder 添加了 java 代码。
-
如果在
mDatabase.child("users").child(kullaniciadi).child("value").setValue(value);之前调用mDatabase.child("users").child(kullaniciadi).child("sanitized").setValue("false");会发生什么?除非在触发之前将值设置为“false”,否则该函数似乎不会进行清理。 -
@JenPerson 当我更改这些代码的位置时,会清除错误状态并且值不会改变。
标签: javascript firebase firebase-realtime-database google-cloud-functions