Java 将新数据推送到firebase数据库时设置自定义键
嗯,我是Firebase的新手,我想在将新数据推送到数据库时拥有自己的密钥 问题:Java 将新数据推送到firebase数据库时设置自定义键,java,android,firebase,firebase-realtime-database,fire-sharp,Java,Android,Firebase,Firebase Realtime Database,Fire Sharp,嗯,我是Firebase的新手,我想在将新数据推送到数据库时拥有自己的密钥 问题: FireBase.push().setValue(mapped_values); 其结构如下所示: 如何在那里创建自己的自定义密钥? 例如用户名之类。调用push()将为您生成一个密钥 如果改为使用child(),您可以自己确定它们的键/路径 ref.child("Victor").setValue("setting custom key when pushing new data to firebase d
FireBase.push().setValue(mapped_values);
其结构如下所示:
如何在那里创建自己的自定义密钥?
例如用户名之类。调用push()
将为您生成一个密钥
如果改为使用child()
,您可以自己确定它们的键/路径
ref.child("Victor").setValue("setting custom key when pushing new data to firebase database");
即使根目录包含多个子目录,也可以使用setValue()创建自定义键 例如,如果“Users”是根用户,并且您希望添加以电子邮件作为密钥的用户,则如下所示
firebase.child("firebase url").child("Users").child("user_1 email").setValue(...)
firebase.child("firebase url").child("Users").child("user_2 email").setValue(...)
等
希望这对您有所帮助。如果您正在使用:
String key="1234567sdfsf8";
//custom object
User user=new User();
DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("Users").child(key).setValue(user);
只是为了分享知识 如果使用的是fire sharp,则可以按如下方式创建自定义关键点
IFirebaseConfig config = new FirebaseConfig
{
AuthSecret = "SecretKey",
BasePath = "https://abc.firebaseio.com/",
Host = "abc.firebaseio.com/"
};
IFirebaseClient client = new FirebaseClient(config);
var obj = new Users
{
FirstName = "test",
MiddleName = "user",
LastName = "xyz"
};
SetResponse response = client.SetAsync("Profile", "YourID");//you can use Set() as well
response = client.SetAsync("Profile/YourID", obj);//you can use Set() as well
简捷
Map<String,Object> taskMap = new HashMap<>();
taskMap.put("Name", name.getText().toString());
taskMap.put("km", km.getText().toString());
// taskMap.put("age", "45");
taskMap.put("Day", day.getText().toString());
mDatabaseReference.push().setValue(taskMap);
Map taskMap=newhashmap();
taskMap.put(“Name”,Name.getText().toString());
taskMap.put(“km”,km.getText().toString());
//taskMap.put(“年龄”、“45”);
taskMap.put(“Day”,Day.getText().toString());
mDatabaseReference.push().setValue(taskMap);
作为顶部答案的更新,和setValue()
不再起作用。现在必须使用set()
函数:
ref.child("Victor").set("setting custom key when pushing new data to firebase database");
若数据库引用子项是固定字符串,则不会添加新值。只是它会更新以前的值。例如:
DatabaseReference myRef=FirebaseDatabase.getInstance().getReference();
String mText=//从editText获取数据或设置自己的自定义数据
现在,如果我插入如下数据:
myRef.child(“abc”).child(“cba”).setValue(多行文字)代码>
每次我插入数据时,它都会更新我以前的数据。它不会添加新数据。因为我的引用在这里是固定的(myRef.child(“abc”).child(“cba”)
//这个总是固定的)
现在将子“cba”的值更改为随机或动态值,该值不会固定。例如:
Random rand=new Random();
//获取一个介于[0-49]之间的数字。
int n=兰特·耐克斯汀(50);
myRef.child(“abc”).child(String.valueOf(n)).setValue(mText)代码>
在这种情况下,它将添加一个新值,而不是更新。因为这里的时间参考不是固定的。它是动态的。push()方法也做同样的事情。它生成随机密钥以保持唯一引用。在POST请求中,它将生成ID,但在PATCH、PUT请求中,它将提到您将提供的密钥。假设您的数据库看起来像
"BookShelf" : {
"book1" : {
"bookName" : "book1_push"
...
}
您的代码(不要使用push(),push()生成一个随机键)
如果您使用Node.js写入firebase实时数据库,则有一个函数:
function registerVibinScores( reference, childId, dataToWrite){
var ref = db.ref(reference); //vibinScores
usersRef = ref.child(childId);
usersRef.set(
dataToWrite
);
}
//Example to invoke it:
var vibinEntry = {
"viberId": "425904090208534528",
"person": {
"name": "kukur",
"score": 0,
"id": "425904090208534528"
},
"vibinScore": 0,
"timeOfEntry": "2021-04-19T16:59:23.077Z"
}
registerVibinScores('vibinScores/allEntries', 112, vibinEntry);
他没有将其标记为答案,因为它没有回答他的问题,因为Firebase会自动生成一个带有随机键的子项,无论您将其推入或设置到数据库中的是什么。@FrenchyNYC如果您使用.child('customkey')…
以及如何使用构造函数中的angularfire2?@特洛伊木马设置:构造函数,则不会(私有数据库:AngularFireDatabase)您可以这样做:this.db.database.ref().child('somechild').set('somevalue')。在2020年,应该使用set()
而不是setValue()
如果密钥不存在,它会抛出一个错误,因为没有定义setValue
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
Book data = new Book();
mDatabase.child("BookShelf").child("book1").setValue(data);
function registerVibinScores( reference, childId, dataToWrite){
var ref = db.ref(reference); //vibinScores
usersRef = ref.child(childId);
usersRef.set(
dataToWrite
);
}
//Example to invoke it:
var vibinEntry = {
"viberId": "425904090208534528",
"person": {
"name": "kukur",
"score": 0,
"id": "425904090208534528"
},
"vibinScore": 0,
"timeOfEntry": "2021-04-19T16:59:23.077Z"
}
registerVibinScores('vibinScores/allEntries', 112, vibinEntry);