sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan håndterer Trello omarrangering af kort, lister, tjeklister mm

Hver vare får en pos (et JavaScript-nummer, så dobbelt-præcision flyder). Derefter gengives de ved at sortere efter pos .

Når et nyt element tilføjes, er det pos er baseret på hvor på listen det er:

  • nederst på listen - maksimum pos i øjeblikket på listen + en buffer (jeg tror 1024 bruges)
  • øverst på listen - minimum pos i øjeblikket på listen divideret med to
  • midt på listen - gennemsnit af pos af de to tilstødende elementer

Den midterste mulighed vil blive tildelt af klienten; toppen/bunden kan enten tildeles af klienten eller sendes til serveren som strengene "top" eller "bottom" i hvilket tilfælde serveren udfører logikken.

På serveren efter tildeling af pos til den nye vare som vist ovenfor, tjekkes varen mod sine nærmeste naboer for tilstødelse - hvis de er mindre end en minimumsafstand fra hinanden (.01 bruges, tror jeg), er de spredt ud (potentielt overlappende til at øge pos af hele listen).

Jeg tror ikke, det er den ideelle måde, men det er sådan, Trello gør det.




  1. Sådan forespørges en dynamisk nøgle - mongodb skemadesign

  2. Tabte nanosekunder fra MongoDB ISODate Object

  3. mongodb mongoose enhed af maxDistance

  4. Korrekt håndtering af asynkrone Mongo-handlinger i Node Promise