亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在將文檔接受到集合 Cloud Firestore 之前嘗試添加檢查

在將文檔接受到集合 Cloud Firestore 之前嘗試添加檢查

料青山看我應如是 2021-08-06 11:17:40
我正在構建一個 qr 考勤掃描儀,并希望查看掃描是否在我的收藏中的start和end時間字段的限制范圍內session。如果掃描發生在兩次之間,則應被接受,否則將不被接受并顯示祝酒詞。目前我有它檢查會話是否只存在而不是在開始和結束時間字段的時間之間。rawData 是sessionID從二維碼中提取的,一旦提取,它會檢查它是否是有效的 sessionID?,F在我只需要檢查掃描時間。任何幫助都會很棒:private void barcodeRecognition(Bitmap photo) {    FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(photo);    FirebaseVisionBarcodeDetector detector = FirebaseVision.getInstance()            .getVisionBarcodeDetector();    Task<List<FirebaseVisionBarcode>> result = detector.detectInImage(image)            .addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionBarcode>>() {                @Override                public void onSuccess(List<FirebaseVisionBarcode> barcodes) {                    for (FirebaseVisionBarcode barcode: barcodes) {                        Rect bounds = barcode.getBoundingBox();                        Point[] corners = barcode.getCornerPoints();                        final String rawValue = barcode.getRawValue();                        int valueType =  barcode.getValueType();                        mAuth.getCurrentUser();                        // TRY LINKING TO userUID on Attendance on Firebase console                        FirebaseUser currentUser = mAuth.getCurrentUser();                        final String user = currentUser.getUid(); // USED TO GET CURRENT USER UID OF PERSON LOGGED IN                        //THIS CAN BE SET TO .getUserName() or getEmail() depending on preference                                    }                                }                            }                        });
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

根據您的數據庫結構,根據您startTime和endTime屬性的限制過濾數據,請使用以下查詢:


FirebaseFirestore rootRef = FirebaseFirestore.getInstance();

Query query = rootRef.collection("session")

    .whereGreaterThanOrEqualTo("startTime", timeToCheck)

    .whereLessThanOrEqualTo("endTime", timeToCheck);

如果不想平等,也可以使用以下代碼:


FirebaseFirestore rootRef = FirebaseFirestore.getInstance();

Query query = rootRef.collection("session")

    .whereGreaterThan("startTime", timeToCheck)

    .whereLessThan("endTime", timeToCheck);

因此,使用此代碼,您將能夠獲取session會話集合中開始和結束時間字段范圍內的所有對象。


編輯:


如果要檢查單個文檔,則需要使用另一個 if 語句。所以在你的實際中if (document.exists()){創建另一個看起來像這樣的:


Attendance attendance = document.toObject(Attendance.class);

Date startTime = attendance.getStartTime();

Date endTime = attendance.getEndTime();

if(timeToCheck.after(startTime) && (timeToCheck.before(endTime)) {

    //Do what you need to do

}

其中timeToCheck是一個類型的對象Date,您需要檢查數據庫中的實際日期。


查看完整回答
反對 回復 2021-08-06
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號