0
votes

Créez A pour boucle à l'intérieur de la fonction Create Firebase Collection

Je crée une application alimentaire avec ionique (4) / angulaire pouvant gérer des magasins de graves et qui utilisent Firebase. Mais j'ai un problème. Je crée une nouvelle commande comme si SO

import { Variation } from "./variation";
import { ItemReview } from "./item-review";
import { Size } from "./size";

export class CartItem {
  id?: string;
  name: string;
  price: number;
  quantity: number;
  thumbnail: string;
  variations: Array<Variation>;
  size: Size;
  subTotal: number;
  review?: ItemReview;

  constructor() {
  }
}


2 commentaires

Si vous n'avez toujours qu'un magasin, vous pouvez y accéder directement comme des magasins [0] .Items, etc. Sinon, boucle sur les magasins avant l'appel de la collection.Ajouter () pour ajouter une commande pour chaque magasin.


Les magasins [0] ne fonctionnent pas car il ne se réfère pas à un magasin spécifique. Je mets tout le code dont vous avez besoin, s'il vous plaît vérifier.


3 Réponses :


0
votes

Vous pouvez utiliser un pour une boucle:

add(stores: Array<CartStore>, address: string) {
    for (const store of stores) {
      if (store && store.items && store.items.length) {
        this.afs.collection<Order>('orders').add({
          userId: this.userId,
          address: address,
          items: store.items,
          store: {
            id: store.id,
            name: store.name
          }
        });
      }
    }
  }


2 commentaires

En faisant cela avec commande 2 articles, il a créé 17 commandes et 2 d'entre eux ont chacun des éléments.


Les 15 autres commandes n'ont pas d'article.



0
votes

J'ai essayé de faire ce xxx

mais ceci crée une commande de sortie (pour chaque élément) au lieu de créer une seule commande avec tous les articles.


13 commentaires

Si vous souhaitez créer tous les éléments dans une commande, vous devez itération au-dessus des éléments à l'avance et créer votre objet avec la structure correcte, vous ne pouvez donc ajouter que cet objet dans un appel supplémentaire.


Puisque vous vérifiez déjà que vous vérifiez les magasins. Pourriez-vous s'il vous plaît poster un exemple de structure de données? C'est à dire. ce qui est passé comme des magasins pour ajouter une fonction


Je viens de télécharger quelque chose.


Désolé, mais cela n'aide pas. Je demandais l'entrée que vous avez passée à votre ajout (magasins: Array , adresse: string) méthode. Vous pouvez ajouter une console.log (magasins) avant votre boucle et postez la sortie ici.


Remplacez votre en boucle par une boucle. Pour IN est utilisé pour des objets lors de l'utilisation de tableaux :)


Cela ne fonctionne pas: '(. Cela a créé une commande pour chaque article.


Avez-vous une solution d'autre pour ce problème?


Cela devrait fonctionner, si vous pouvez partager une jsfiddle ou Stackblitz, je peux vous aider!


Je n'utilise pas Jsfiddle ou Stackblitz.


Cela ne fonctionne pas car "Store" (après la condition IF utilisée comme filtre pour un stockage inutile "stocker" stocker "stocker uniquement un élément.


Chaque article est stocké dans un "magasin" différent.


Avez-vous une autre solution s'il vous plaît?


C'est ce que je parlais dans mon tout premier commentaire ici: si vous souhaitez créer tous les articles d'une commande, vous devez itération à l'avance et créer votre objet avec la structure correcte, vous ne pouvez donc ajouter que cet objet en un. appel. Si vous pouvez partager votre exemple dans un Stackblitz, je peux vous aider.



0
votes

Ceci est mon magasin.Service.ts xxx

et ceci est mon store.ts xxx

J'ai 2 applications qui ont 2 applications Lié à la même firebase, l'un concerne les clients, l'autre est pour les administrateurs (compte de magasin). Je remarque que je n'ai qu'un seul compte administrateur dans Firebase.


0 commentaires