Question

J'ai un modèle itérant à travers les cordes d'utilisateur.

    <div class="page-header"><h4>Colleagues</h4></div>
        <ul class="list-group">
            {{#each colleague}}
                <li class="list-group-item">
                    <div class="colleague">
                    {{nameOrEmail}}
                    </div>
                </li>
            {{/each}}
        </ul>

Quand j'appelle

nameOrEmail: function () {
    if (myTeam.ready()) {
        console.log ("into function nameorEmail");
        console.log(this);
        var self=this;
        if (self) { 
        var colleague=Meteor.users.findOne({_id:self});
        console.log(colleague);
        if (colleague.username)
            return colleague.username;
        else if (colleague.emails.count()>0)
            return collegue.emails[0].address;
        }}
    return null;

Dans le modèle, il jette une erreur lors de l'exécution du Var collègue= météor.user.findone ({_ id: auto}). Spécifiquement, il jette une erreur de type que l'objet 0 n'a pas de méthode 'substr'

manageAccount.js?a86dcce62b84091cf50c653de6d2db7f0102a155:59
Exception from Deps recompute function: TypeError: Object 0 has no method 'substr'
at http://localhost:3000/packages    /minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1211:33
at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:159:22)
at isOperatorObject (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1210:5)
at compileValueSelector (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1406:14)
at http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1386:9
at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
at compileDocumentSelector (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1369:5)
at _.extend._compileSelector (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1346:12)
at new Minimongo.Matcher (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:1289:27)
at new LocalCollection.Cursor (http://localhost:3000/packages/minimongo.js?4ee0ab879b747ffce53b84d2eb80d456d2dcca6d:142:20) 

J'ai confirmé que je peux exécuter la commande de la recherche de la console JavaScript et obtenir le résultat attendu. J'ai également tracé l'exécution du programme via les fonctions de météore. Il me semble que la fonction _.type dans le fichier sélectoral.js peut être le coupable.

LocalCollection._f = {
// XXX for _all and _in, consider building 'inquery' at compile time..

_type: function (v) {
if (typeof v === "number")
  return 1;
if (typeof v === "string")
  return 2;
if (typeof v === "boolean")
  return 8;
if (isArray(v))
  return 4;
if (v === null)
  return 10;
if (v instanceof RegExp)
  // note that typeof(/x/) === "object"
  return 11;
if (typeof v === "function")
  return 13;
if (v instanceof Date)
  return 9;
if (EJSON.isBinary(v))
  return 5;
if (v instanceof LocalCollection._ObjectID)
  return 7;
return 3; // object

Lorsque je traquis cela avec V en tant que chaîne (confirmée dans le moniteur de variable local de débogueur JavaScript):

String {0: "d", 1: "e", 2: "P", 3: "k", 4: "j", 5: "N", 6: "j", 7: "4", 8: "8", 9: "T", 10: "e", 11: "F", 12: "v", 13: "d", 14: "z", 15: "v", 16: "K", length: 17} 

Il renvoie une valeur de 3 (objet) plutôt que 2 (chaîne).

Je soupçonne que c'est la cause première de mon problème. Est-ce un bogue dans Meteor? Est-ce que quelqu'un sait comment travailler autour de ce problème?

Merci d'avance pour toute aide.

Était-ce utile?

La solution

OK, j'ai explicitement déployé la chaîne pour taper la chaîne et cela fonctionne maintenant.Très étrange.

        if (self) { 
        var colleague=Meteor.users.findOne({_id:String(self)});
        console.log(colleague);
        if (colleague.username)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top