Meteor, MongoDB erhalten einen Teil des Arrays durch Abonnement

Ich habe eine Frage, wie man mit MongoDB und MeteorJS ein bestimmtes Element eines Arrays bekommt. Ich habe das folgende Schema für das Benutzerdokument:

    bankList:[
       {
          id: "34567890987654345678",
          name: "xfgchjbkn",
          type: "credit"
       },
       {
          id: "09876543456789098767"
          name: "65789876t8",
          type: "debit"
       }
    ]

Ich abonniere zunächst nur einen Teil der Felder im Array, insbesondere eine Liste aller IDs. Dann habe ich einen Bearbeitungsbildschirm, der alle Felder für ein bestimmtes Element im Array mit einer übereinstimmenden ID abonnieren sollte. Ich möchte nicht den Rest des Arrays nur das einzelne Element verfügbar machen. Derzeit benutze ich Folgendes, um zunächst eine Liste nur der IDs zu erstellen:

   Meteor.users.find({_id: this.userId},
                        {fields:{'bankList.id': 1}});

Und die folgende Publikations-Abonnement-Methode, um nur die Informationen eines bestimmten Elements abzurufen:

Veröffentlichung:

  Meteor.publish("userBankAdvanced", function(bankId){
      check(bankId,String);
      if(this.userId){
           return Meteor.users.find({_id:this.userId,"bankList.id": bankId}, {'bankList.

Abonnement:

  this.route('edit_account', {
        path: '/edit/account/',
        waitOn: function(){
              if(Session.get("bankId")){
                    return Meteor.subscribe('userBankAdvanced',Session.get("bankId"));
        }
        return null;
        },
        data: function(){
              if(Session.get("bankId")){
                return Meteor.users.findOne();
        }
        return null;
        },
        onBeforeAction: function(){
              beforeHooks.isRevise(Session.get("bankId"));
        }
  });

Die Abonnementmethode gibt alle Elemente des Arrays mit allen Informationen zurück. Ich möchte zum Beispiel nur Folgendes (nicht die gesamte Liste mit allen Informationen):

       bankList:[
       {
          id: "34567890987654345678",
          name: "xfgchjbkn",
          type: "credit"
       }]
: 1}); }else{ this.ready(); } });

Abonnement:

  this.route('edit_account', {
        path: '/edit/account/',
        waitOn: function(){
              if(Session.get("bankId")){
                    return Meteor.subscribe('userBankAdvanced',Session.get("bankId"));
        }
        return null;
        },
        data: function(){
              if(Session.get("bankId")){
                return Meteor.users.findOne();
        }
        return null;
        },
        onBeforeAction: function(){
              beforeHooks.isRevise(Session.get("bankId"));
        }
  });

Die Abonnementmethode gibt alle Elemente des Arrays mit allen Informationen zurück. Ich möchte zum Beispiel nur Folgendes (nicht die gesamte Liste mit allen Informationen):

       bankList:[
       {
          id: "34567890987654345678",
          name: "xfgchjbkn",
          type: "credit"
       }]

Antworten auf die Frage(2)

Ihre Antwort auf die Frage