首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据Firestore的ID验证二维码?

如何根据Firestore的ID验证二维码?
EN

Stack Overflow用户
提问于 2019-10-03 15:11:22
回答 1查看 469关注 0票数 0

我正在开发一个离子4应用程序,应该扫描和验证二维码索赔,使用PhoneGap插件BarcodeScanner。扫描工作正常,但我在验证二维码时遇到了困难。

我的想法是,只有当userID和PromotionID与二维码(在Firestore数据库中)匹配时,二维码才对用户有效。我正在使用文档ID生成QR代码,例如,QR代码‘075u6SGzsZ3tWq1v3Trb’和‘XXDzN47QXqsGZIMeySw0’只能由user123使用。

下面是实现

Example.page.ts:

代码语言:javascript
运行
复制
 qr: any;

scanQRCode () {
  this.options= {
  preferFrontCamera : false, 
  showFlipCameraButton : true, 
  showTorchButton:true,
  disableSuccessBeep: false,
  torchOn: false,
  prompt: 'Scan your QRcode'
};
this.subscription = this.afs.collection('claims')
 .snapshotChanges()
 .subscribe(data => {

  this.qr= data.map(e => {
    return {
      id: e.payload.doc.id,
      promotionID: e.payload.doc.data()['promotion'],
      userID: e.payload.doc.data()['user'],
    };
  })
  console.log(this.item);
  this.subscription.unsubscribe();
});

    this.scanner.scan(this.options).then((data) => {
      this.scannedData = data;
      if(this.qr.promotionID && this.qr.userID == data){
      this.navCtrl.navigateForward('/nextPage');
    }else{
      return this.presentAlert('Error','Invalid QRCODE')
    }

  }, (err) => {
  console.log('Error: ',err);
 })
}

Example.page.html

代码语言:javascript
运行
复制
<ion-button expand="block" icon-left (click)="scanQRCode()"><ion-icon name="qr-scanner"></ion-icon>Scan code</ion-button>

我是离子和火基地的新手,任何想法或建议都将非常感谢。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-10-04 21:00:19

这有一系列的问题。

您可以定义扫描仪选项,但不要将它们传递给scan()

代码语言:javascript
运行
复制
this.options= {
  preferFrontCamera : true, 
  showFlipCameraButton : true, 
  showTorchButton:true,
  disableSuccessBeep: false,
  torchOn: false,
  prompt: 'Scan your QRcode'
};
this.scanner.scan(this.options).then((data) => {

.subscribe()但没有列出一个.unsubscribe(),这意味着有一个内存泄漏。

你没有在你发布的任何地方调用getUser() - this.claim是空的吗?

当你检查是否应该重定向到结果页面时,它不会在你扫描后测试this.scannedData,它只是将用户的两个部分与this.claim.claimuser == this.claim.promoid进行比较。

在您试图比较的部分中,claim.claimuser永远不会存在,因为您将其映射到claim.user

我想它真的需要重新启动了,对不起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58214034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档