我需要一种检查数据的方法,实时数据库上是不是存在

Posted

技术标签:

【中文标题】我需要一种检查数据的方法,实时数据库上是不是存在【英文标题】:i needed a way to check data, is that exist or not on realtime database我需要一种检查数据的方法,实时数据库上是否存在 【发布时间】:2022-01-04 14:31:27 【问题描述】:

我有一个用于打开更高权限活动布局的二维码布局,我如何在 firebase 数据库上在线制作/搜索代码,如下所示

this what my firebase data look

下面是可以打开新活动的代码,但我希望每个管理员的代码都不同,所以如果管理员退休,我不需要每次都更改应用程序内的代码


public class BarcodeScanner extends AppCompatActivity 

    private CodeScanner mCodeScanner;
    private static final String Code = "newsenyum";

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_barcode_scanner);
        CodeScannerView scannerView = findViewById(R.id.scanner_view);
        mCodeScanner = new CodeScanner(this, scannerView);
        mCodeScanner.setDecodeCallback(new DecodeCallback () 
            @Override
            public void onDecoded(@NonNull final Result result) 
               BarcodeScanner.this.runOnUiThread(new Runnable() 
                    @Override
                    public void run() 

                        String codeFromScanner = result.getText(); // initialize the code from scanner

                        if(Code.equals (codeFromScanner.trim ()))
                            redirectToNewActivity ();
                        else
                            Toast.makeText (BarcodeScanner.this, "QRCode Tidak Dapat di Gunakan", Toast.LENGTH_SHORT).show ( );
                        
                    
                );
            
        );


        scannerView.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                mCodeScanner.startPreview();
            
        );
    



    private void redirectToNewActivity() 
        startActivity (new Intent (getApplicationContext ( ), AdminUID.class));
        finish ( );
    

    @Override
    protected void onResume() 
        super.onResume();
        mCodeScanner.startPreview();
    

    @Override
    protected void onPause() 
        mCodeScanner.releaseResources();
        super.onPause();
    


this is the code

【问题讨论】:

我很难理解问题所在。这段代码中究竟有什么不符合您的预期? @AlexMamo 所以我希望 private static final String Code = "newsenyum"; 在 firebase 管理员帐户上 对不起,我还是不明白你在找什么, @AlexMamo 我想检查一个存在于实时 firebase 上的字符串,看起来像 barcode code : pa29h9h75dg,就像检查这个字符串是否存在于 firebase 但不仅存在于一个帐户中跨度> @AlexMamo 也许我试图更具体地解释最重要的问题,我一直在编辑它,对不起,如果我在这里的英语不好,很难解释我的问题 【参考方案1】:

要检查数据库中是否存在特定的条形码,您需要使用 Query 对象。所以请使用以下代码行:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference adminRef = db.child("Admin");
Query queryByCode = adminRef.orderByChild("barcode code").equalTo("pa29h9h75dg");
queryByCode.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() 
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) 
        if (task.isSuccessful()) 
            DataSnapshot snapshot = task.getResult();
            if(snapshot.exists()) 
                Log.d("TAG", "Barcode already exists.");

                for (DataSnapshot ds : snapshot.getChildren()) 
                    String id = ds.child("id").getValue(String.class);
                    Log.d("TAG", id);
                
             else 
                Log.d("TAG", "Barcode doesn't exist.");
            
         else 
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        
    
);

logcat 中的结果将是:

Lela

【讨论】:

好的,让我现在试试 是的。试一试,告诉我它是否有效。 idk 为什么,但我无法从上面的二维码获取文本 看不到文字是什么意思?你指的是id吗?如果是,请检查我的更新答案。 还没有,但让我现在试试,然后打勾:)

以上是关于我需要一种检查数据的方法,实时数据库上是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查sql server ce中是不是存在项目的最佳方法?

如何检查单元和功能是不是存在?

laravel 在插入之前检查记录是不是存在,这是一种有效的方法

赛普拉斯:检查元素是不是存在无异常

使用 cURL 检查 FTPS 站点上是不是存在文件

如何检查 NSDictionary 中的值是不是存在于字典数组中