我的应用有一个用户个人资料和一个愿望清单,这两个都保存在firebase上
[使用的火树树木]
问题是,当用户更改他/她的国家/地区,性别或名称时,整个愿望清单中的孩子会被自动删除我仍然不知道为什么,所以你们可以帮忙吗? 这些是我的代码的片段:
更新个人资料活动中的proflie的方法:
public void updateProfile() {
String name = editName.getText().toString().trim();
String country = countriesSpinner.getSelectedItem().toString();
String gender = genderSpinner.getSelectedItem().toString();
UserInfo userInfo = new UserInfo(name, country, gender);
databaseReference.child(user.getUid()).setValue(userInfo);
}
在其他活动中将项目添加到WishList(存储在本地数据库中的产品信息):
Button wishListBtn = (Button) findViewById(R.id.wishListBtn);
wishListBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(firebaseAuth.getCurrentUser() != null) {
final FirebaseUser user = firebaseAuth.getCurrentUser();
final String key = databaseReference.child(user.getUid()).child("WishList").push().getKey();
final WishlistItem wlItem = new WishlistItem();
wlItem.setwId(key);
wlItem.setwName(cursor.getString(1));
wlItem.setwStore(cursor.getString(2).toUpperCase());
wlItem.setwCategory(cursor.getString(3));
databaseReference.child(user.getUid()).child("WishList").orderByChild("wName").equalTo(cursor.getString(1)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if( dataSnapshot.exists()) {
//Value exists
Toast.makeText(ProductDetails.this, "Already added to Wish List", Toast.LENGTH_SHORT).show();
} else {
//Value doesn't exist
databaseReference.child(user.getUid()).child("WishList").child(key).setValue(wlItem);
Toast.makeText(ProductDetails.this, "Product Added successfully to Wish List", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
使用
databaseReference.child(user.getUid())
.setValue(userInfo);
覆盖整个节点。
你可以做(作为例子)
databaseReference.child(user.getUid())
.child("uCountry")
.setValue(country)
或者您向userId添加另一个子项,例如userInfo
,其中包含国家/地区,性别和名称
databaseReference.child(user.getUid())
.child("userInfo")
.setValue(userInfo);