0
votes

Comment puis-je créer une collection dans Cloud Fireestore qui peut être une réorganisation de l'utilisateur sans écrire tous les documents?

permet de dire que j'ai une collection de liste de contrôle où chaque article est son propre document car il contient beaucoup d'autres données.

Je veux que l'utilisateur puisse faire glisser et déposer pour réorganiser cette liste une sauvegarde de cette façon. Ma pensée initiale était d'avoir un champ modifié pour refléter cet ordre, mais le déplacement d'un objet nécessite de modifier la valeur de chaque document après le nouvel emplacement.

Y a-t-il un moyen d'y parvenir sans un nombre massif d'écritures?


0 commentaires

3 Réponses :


0
votes

Si j'ai bien compris votre question correctement, ce que vous pouvez faire, c'est que vous pouvez avoir un document distinct contenant l'index de tout le document de liste de contrôle. Toutes les documents de liste de contrôle peuvent conserver leurs informations respectives car elles sont censées être. Par exemple, xxx pré>

et index contient une structure comme ci-dessous une fois la traînée effectuée: P>

  Index   ->   field         value  
               Checklist1    3  
               Checklist2    2
               Checklist3    1


0 commentaires

0
votes

Je le fais habituellement en utilisant une valeur de point flottante pour la commande.

Dites que vous avez une liste avec ces 3 documents:

  • id = a, ordre = 1.0
  • id = b, ordre = 2.0
  • id = c, ordre = 3.0

    Supposons maintenant que nous voulons déplacer le document A entre B et C . Vous feriez cela en changeant sa commande à 2.0 + (3.0 - 2.0) / 2 = 2.5 . .

    • id = b, ordre = 2.0
    • id = a, ordre = 2,5
    • id = c, ordre = 3.0

      Cela fonctionne pour un nombre raisonnable de swaps, qui est le scénario que je traite habituellement.

      Si vous traitez avec un grand nombre / potentiellement infini d'itérations, vous voudrez examiner la précision de l'opération de point flottante. Dans ce cas, votre alternative pourrait être d'utiliser un type de valeur personnalisée, c'est-à-dire codé sur la valeur dans un champ de chaîne, puis utilisez une bibliothèque personnalisée pour effectuer la division à une précision numérique supérieure.


0 commentaires

1
votes

Si l'ordre des documents change fréquemment, vous pouvez éviter d'écrire le contenu de chaque document en utilisant un document complet pour conserver la commande, à l'aide d'un tableau de chaînes contenant les ID du document. En fait, vous pouvez détenir de nombreuses commandes différentes en fonction de la manière dont vous souhaitez afficher les documents.

Dites que vous avez une collection de documents: P>

collection-meta
  - order
    - byAlpha: ["docA", "docB", "docC"]
    - byScore: ["docC", "docA", "docB"]


0 commentaires