如何检查我孩子的数据是否存在?

时间:2017-03-19 06:40:26

标签: java android firebase firebase-realtime-database

这是代码,它不会检查我的editText中的值是否存在。

mSubmitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        final String title_val = mPostTitle.getText().toString().trim();
        mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Forums");
        mDatabase2.child("title").child("KS1: "+title_val).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()) {
                    String success = "Your title already exists...";
                    Toast.makeText(PostActivityKinderSection1.this, success, Toast.LENGTH_LONG).show();
                    mSubmitBtn.setEnabled(true);
                }
                else {
                    mSubmitBtn.setEnabled(false);
                    startPosting();
                }
            }
        });
    }
});

我想避免在我的firebase中使用相同的标题多次保存。

enter image description here

1 个答案:

答案 0 :(得分:2)

您不仅可以检查是否存在final String title_val = "KS1: " + mPostTitle.getText().toString().trim(); mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Forums"); mDatabase2.addListenerForSingleValueEvent(new ValueEventListener() { @Override void onDataChange(DataSnapshot forumsSnapshot) { boolean isTitleAlreadyUsed = false; for (DataSnapshot specificForum : forumsSnapshot.getChildren()) { // Check if key 'title' exists and if title value is equal to value to save (title_val) if (specificForum.hasChild("title") && (title_val.equals(specificForum.child("title").getValue()))){ isTitleAlreadyUsed = true; } } if (isTitleAlreadyUsed) { String success = "Your title already exists..."; Toast.makeText(PostActivityKinderSection1.this, success, Toast.LENGTH_LONG).show(); mSubmitBtn.setEnabled(true); } else { mSubmitBtn.setEnabled(false); startPosting(); } } } 子项,还必须遍历所有论坛以查明是否已存在要保存的标题。你可以这样做:

<input type="text" name="ame-input-field" disabled><br>

如果遇到性能问题,请尝试使用while循环替换for循环,或者在db构造中将标题用作子键。