2015-09-02 4 views
1

J'ai des documents de notification Couchbase stockés dans le format ci-dessous:Interrogation vue Couchbase en passant paramètre

{ 
    "_id":"notification::5403cb1a6c965dcfe9", 
    "alert":"test data", 
    "body":{ 
     "created_by":"user_54986e326694f10e511cf", 
     "description":" reported ", 

    }, 
    "channels":[ 
     "user_54986e326694f10e511cf", 
     "user_54986e326694f10e511cp" 
    ], 
    "notification_type":"new_report", 
    "seen":true, 
    "timestamp":"2015-01-06T15:48:25.092Z", 
    "type":"notification" 
} 

Le document contient JSON tableau channels, il est une liste de user_id qui souscrivent à des canaux. Le problème est que je dois émettre le document de notification si le champ de chaneel contient user_id, si je passe le passage user_id ='user_54986e326694f10e511cf' comme paramètre principal.

ci-dessous est mon avis de Couchbase fonction de la carte, mais il ne retourne rien

function (doc, meta) { 
    if(doc.type=='notification' && doc.channels){ 

     for (var user in doc.channels) { 
      emit(user, { 
       alert: doc.alert, 
       body: doc.body, 
       seen: doc.seen, 
       timestamp: doc.timestamp 
      }); 

     } 

    } 
} 

Je me demande où je fais mal.

Répondre

0

Ceux "alerte", "corps", "vu" etc que vous émettez comme touches dans le dictionnaire - sont ces chaînes? Si oui, ne devraient-ils pas être cités?

En d'autres termes, essayez ceci:

function (doc, meta) { 
    if(doc.type=='notification' && doc.channels){ 

     for (var user in doc.channels) { 
      emit(user, { 
       "alert": doc.alert, 
       "body": doc.body, 
       "seen": doc.seen, 
       "timestamp": doc.timestamp 
      }); 
     } 
    } 
} 
+0

J'ai essayé, mais toujours obtenir { "TOTAL_ROWS": 225784, "lignes": [ ] } – rash111

+0

permet de le décomposer en morceaux. Vous devez d'abord vous assurer que votre fonction fonctionne bien, c'est-à-dire qu'elle produit quelque chose. Et seulement plus tard, vous devriez utiliser une requête pour limiter cette sortie. Je vous suggère d'utiliser l'interface utilisateur Web de couchbase pour voir le résultat de votre vue (pas votre code). Quel résultat obtenez-vous? il devrait y avoir un lien qui ouvre les résultats de la vue dans un autre onglet et imprime 10 des résultats par défaut. que vois-tu? – FuzzyAmi

+0

J'utilise couchbase web UI, quand je lance cette requête sans aucun paramètre clé, il donne le résultat, après j'utilise la clé du jeu de résultats et essaie d'exécuter agian il donne {"total_rows": 225784, "rows": []} – rash111