Partage
  • Partager sur Facebook
  • Partager sur Twitter

Type Date entre Angular et Firebase

Probléme d'enregisterment de type date en firebase

    19 juillet 2018 à 12:01:41

    Bonjour pour tout le monde,

    j'ai un problème de sauvegarder et d'affichage de type date entre Angular et firebase. ey voici mon model :

    - post.model.ts

    export class Post {

    public title: string;
    public createdAt: Date;
    public content: string;
    public loveIts: number;

    constructor(title, createdAt, content, loveIts ) {
    this.title = title;
    this.createdAt = createdAt;
    this.content = content;
    this.loveIts = loveIts;
    }
    }

     voici new-post-component.ts

    import { Component, OnInit } from '@angular/core';
    import {FormBuilder, FormGroup, Validators} from '@angular/forms';
    import {PostService} from '../services/post.service';
    import {Router} from '@angular/router';
    import { Post } from '../models/Post.model';
    
    @Component({
      selector: 'app-new-post',
      templateUrl: './new-post.component.html',
      styleUrls: ['./new-post.component.scss']
    })
    export class NewPostComponent implements OnInit {
    
      postForm: FormGroup;
    
      constructor(private formBuilder: FormBuilder,
                  private postService: PostService,
                  private router: Router) { }
    
    
    
      ngOnInit() {
        this.initForm();
      }
    
      initForm() {
        this.postForm = this.formBuilder.group( {
          title: ['', Validators.required],
          content: ['', Validators.required]
        });
      }
    
      onSubmit() {
        const title = this.postForm.get('title').value;
        const createdAt = new Date();
        const content = this.postForm.get('content').value;
        const loveIts = 0;
        console.log(createdAt);
        const newPost = new Post(title, createdAt, content, loveIts );
        console.log(newPost);
        this.postService.createNewPost(newPost);
        this.router.navigate(['/posts']);
    
      }
    
    }
    

    voici post.service.ts

    import { Injectable } from '@angular/core';
    import {Post} from '../models/Post.model';
    import {Subject} from 'rxjs/Subject';
    import * as firebase from 'firebase';
    
    @Injectable()
    export class PostService {
    
      private posts: Post[] = [];
    
      postsSubject = new Subject<Post[]>();
      constructor() {}
    
      emitPosts() {
        this.postsSubject.next(this.posts);
      }
    
      savePost() {
        firebase.database().ref('/posts').set(this.posts);
      }
    
      getPosts() {
        firebase.database().ref('/posts')
          .on('value', (data) => {
            this.posts = data.val() ? data.val() : [];
            this.emitPosts();
          });
      }
    
      createNewPost(newPost: Post) {
        this.posts.push(newPost);
        this.savePost();
        this.emitPosts();
      }
    
      removePost(post: Post) {
        const postIndexToRemove = this.posts.findIndex(
          (postEl) => {
            if (postEl === post) {
              return true;
            }
          }
        );
        this.posts.splice(postIndexToRemove, 1);
        this.savePost();
        this.emitPosts();
      }
    
    
    
    }
    

    voici resultat database de firebase:

     "posts" : [ {
        "content" : "eeeeee",
        "loveIts" : 0,
        "title" : "testlivre"
      }, {
        "content" : "test",
        "loveIts" : 0,
        "title" : "test"
      } ]

    Comment résoudre c problème et merci en avance.



    • Partager sur Facebook
    • Partager sur Twitter
      17 juillet 2019 à 8:37:08

      Bonjour

      J'ai exactement le meme probleme.. a lenvoi dans firebase avec le .set , le champs date de mon array posts est supprimé par firebase.

      Je crois que c'est un probleme de timestamp.. Qqu a trouvé une solution?

       Merci

      • Partager sur Facebook
      • Partager sur Twitter
        23 août 2019 à 13:34:55

        c'est tous bête, Date est un objet, firebase ne stock pas ce type d'objet, il suffit d'appliquer la méthode toString() pour stocker la date sous forme de chaîne de caractères :p
        • Partager sur Facebook
        • Partager sur Twitter

        Type Date entre Angular et Firebase

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown