2017-12-06 11 views
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") 
    } 



} 

iのためのコードであるイオンとfirebase

を使用するコード

//ですスタンダードコードを使用してfirebaseにデータをプッシュします。同じ日にダブルレポートをアップロードできます。

+0

今日のデータ> – Eliseo

+0

これを行うには、データベースに日付を保存し、サーバー側をチェックしますか? –

答えて

0

1日(1ミリ秒)より新しい既存のレポートをFirebaseでチェックできます。親密な関係がある場合は、新しいものを挿入することができます。 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); 
}); 

注:1970年1月1日00:00:00からの経過mydate =ミリ秒。

関連する問題