J'essaye de construire un (simple) twitter-clone qui utilise CouchDB comme Database-Backend. En raison de ses fonctionnalités réduites, j'en ai presque terminé avec le codage, mais il reste une chose que je ne peux pas résoudre avec CouchDB - le scénario par utilisateur.Construire un (simple) twitter-clone avec CouchDB
Comme avec twitter, le calendrier par utilisateur devrait afficher les tweets de toutes les personnes que je suis, dans un ordre chronologique. Avec SQL, c'est une Select-Statement assez simple, mais je ne sais pas comment la reproduire avec CouchDBs Map/Reduce.
Voici le SQL-déclaration j'utiliser un SGBDR:
SELECT * FROM tweets WHERE user_id IN [1,5,20,33,...] ORDER BY created_at DESC;
schéma CouchDB détails
utilisateur-schéma:
{
_id:xxxxxxx,
_rev:yyyyyy,
"type":"user",
"user_id":1,
"username":"john",
...
}
Tweet-schéma:
{
"_id":"xxxx",
"_rev":"yyyy",
"type":"tweet",
"text":"Sample Text",
"user_id":1,
...
"created_at":"2011-10-17 10:21:36 +000"
}
Avec view collations il est assez simple d'interroger CouchDB pour une liste de "tous les tweets avec user_id = 1 classés chronologiquement".
Mais comment puis-je récupérer une liste de "tous les tweets qui appartiennent aux utilisateurs avec l'ID 1,2,3, ... classés par ordre chronologique"? Ai-je besoin d'un autre schéma pour mon application?
Je suis désolé, mais c'est mauvaise pratique. Vous ne réduisez pas à de petites et simples valeurs dans votre fonction de réduction - ce n'est pas comment les fonctions de réduction doivent être utilisées. –
Je pense que c'est pourquoi il soulève un "reduce_overflow_error" – Railsmechanic
Ici, supprimé la fonction de réduction et changé la fonction de la carte. @PartlyCloudy Je n'aurais pas dû utiliser une réduction comme ça, heureux maintenant? – Shedokan