sistema di ordinamento pazzia del commento

0

Ho un sito web in cui sto caricando tutti i commenti degli utenti per il numero di Mi piace che hanno. Questo mi ha causato dei problemi.

Diciamo che il commento # 1 ha 5 Mi piace, il commento # 2 ha 2 Mi piace, e il resto ha 0 Mi piace. Abbiamo il seguente ID del commento:

1   2   3   4   5   6   7   8   9   10

Ora supponiamo che qualcun altro "mi piace" commenta # 4. Ora l'ID ordinato è:

1   2   4   3   5   6   7   8   9   10

Supponiamo che sto caricando 3 commenti allo stesso tempo. Nello scenario n. 1, ho caricato i commenti:

{1, 2, 3}

Ora quando clicco su "carica altro", carico:

{3, 5, 6}

Caricato # 3 due volte! E il commento n. 4 non è mai visto. I problemi si verificano anche quando un commento viene eliminato, ma questo è per dopo.

Come posso aggirare questo? Ho visto siti web ordinati da "Mi piace" o qualcosa di simile e non ho quasi mai incontrato duplicati e / o commenti mancanti. Qualche consiglio?

Grazie.

    
posta Shahar 01.02.2014 - 20:11
fonte

1 risposta

1

Sembra che tu stia utilizzando "LIMIT 3" ingenuo e quindi "LIMIT 3,3" per restituire solo quei record aggiuntivi richiesti. In questo modo, ovviamente, i duplicati e i commenti persi risultano in caso di registrazione di un "mi piace" all'interno della sessione.

Per risolvere il problema, potresti provare uno dei seguenti approcci:

  • Piuttosto che la clausola OFFSET , invia una matrice JSON di tutti gli ID commenti già mostrati all'utente ed escludili dalle opzioni valide tramite una clausola WHERE IN(1,2,3) .
  • Come sopra, ma memorizza l'array dell'ID del commento mostrato lato server, nella sessione corrente dell'utente o anche in una tabella temporanea MySQL.
  • Non inviare l'intero "nuovo commento" in una singola richiesta. Invece, fai in modo che la pagina richieda un indice di ID commenti e i loro attributi ordinabili, quindi richiedi "testo di commento" o "modifica commenti" tramite richieste distinte.
  • Non omettere alcun commento dall'elenco inviato al client. Invece, includi TUTTI i commenti in ogni richiesta e decidi quali mostrare al cliente.

Tieni presente che nessuna delle precedenti è priva di potenziali problemi di prestazioni, ma uno degli approcci sarà necessario se desideri ordinare in base a qualsiasi proprietà mutabile, "Mi piace" o che cosa hai.

    
risposta data 01.02.2014 - 21:48
fonte

Leggi altre domande sui tag