0

한 명의 사용자 만 한 날에만 적용 할 수있는 보고서를 만들어서 동일한 날짜에 두 번 올릴 수 없습니다. 여기에서 나는 이온 사용이 html로데이터를 firebase에서 한 번만 사용할 수있게 만드는 방법

<ion-header> 

    <ion-navbar> 
    <ion-title>laporanharian</ion-title> 
    </ion-navbar> 

</ion-header> 


<ion-content padding> 
    <ion-list> 
      <ion-datetime displayFormat="MMM DD YY" [(ngModel)]="myDate" #mydate></ion-datetime> 

      <ion-item> 
      <ion-label floating>Porsi Karbohidrat</ion-label> 
      <ion-input type="number" #porsiKarbohidrat></ion-input> 
      </ion-item> 

      <ion-item> 
      <ion-label floating>Porsi Protein Hewani</ion-label> 
      <ion-input type="number" #porsiProteinHewani></ion-input> 
      </ion-item> 

      <ion-item> 
      <ion-label floating>Porsi Protein Nabati</ion-label> 
      <ion-input type="number" #porsiProteinNabati></ion-input> 
      </ion-item> 

      <ion-item> 
       <ion-label floating>Porsi Lemak</ion-label> 
       <ion-input type="number" #porsiLemak></ion-input> 
      </ion-item> 

    </ion-list> 
    <button ion-button full (click)="submitLaporan()">Submit</button> 

</ion-content> 

코드입니다

중포 기지와이 TS에 대한 코드 단지

import { Component, ViewChild } from '@angular/core'; 
import { IonicPage, NavController, NavParams,AlertController } from 'ionic-angular'; 
import { AngularFireAuth } from 'angularfire2/auth'; 
import { AngularFireDatabase} from 'angularfire2/database'; 

/** 
* Generated class for the LaporanharianPage page. 
* 
* See http://ionicframework.com/docs/components/#navigation for more info 
* on Ionic pages and navigation. 
*/ 

@Component({ 
    selector: 'page-laporanharian', 
    templateUrl: 'laporanharian.html', 
}) 
export class LaporanharianPage { 


    myDate: String = new Date().toISOString(); 
    id : string; 

    constructor(private alertctrl :AlertController ,private db : AngularFireDatabase,public fire :AngularFireAuth,public navCtrl: NavController, public navParams: NavParams) { 
    } 

    @ViewChild('mydate') mydate; 
    @ViewChild('porsiKarbohidrat') porsiKarbohidrat; 
    @ViewChild('porsiProteinHewani') porsiProteinHewani; 
    @ViewChild('porsiProteinNabati') porsiProteinNabati; 
    @ViewChild('porsiLemak') porsiLemak; 

    ionViewDidLoad() { 
    console.log('ionViewDidLoad LaporanharianPage'); 
    } 
    alert(message : string) 
    { 
    this.alertctrl.create({ 
     title: 'info !', 
     subTitle: message, 
     buttons: ['OK'] 
    }).present(); 
    } 

    submitLaporan() 
    { 

    this.id = this.fire.auth.currentUser.uid; 
    this.db.list('/laporan/'+this.id).push({ 
     mydate : this.mydate.value, 
     porsiKarbohidrat : this.porsiKarbohidrat.value, 
     porsiProteinHewani : this.porsiProteinHewani.value, 
     porsiProteinNabati : this.porsiProteinNabati.value, 
     porsiLemak : this.porsiLemak.value, 
    }) 

    this.alert("Sukses") 
    } 



} 

난입니다 // 코드

입니다 standar 코드를 사용하여 데이터를 firebase 에 푸시합니다. 같은 날에 보고서를 두 번 업로드 할 수 있습니다.

+0

데이터베이스에 날짜를 저장하고 오늘> 오늘 날짜 인 경우 서버 쪽을 확인하십시오. – Eliseo

+0

어떻게해야합니까? –

답변

0

일일 (밀리 초)보다 새로운 기존 보고서를 Firebase에서 확인할 수 있습니다. 협조가 있으면 새로운 것을 삽입하도록 허용하십시오.

방법은 중포 기지에서 보고서를 필터링하기 :

const yesterday = Date.now() - (24 * 60 * 60 * 1000); 

db 
    .list<Report>('/laporan/' + this.id) 
    .valueChanges() 
    .map(reports => reports.filter(report => report.mydate > yesterday)) 
    .subscribe(reports => { 
    if (reports.length === 0) { 
     // insert report in Firebase 
    } 

    console.log(reports); 
}); 

참고 : mydate = 밀리 초 경과 1월 1일 이후 1970 세계 협정시 00시 00분 0초.