2015-05-09 11 views
7

Próbuję dostać ostrzeżenia dla określonego adresu w moim MongoDB, stosując kombinację Meteor i angularjskątowe-meteor znaleźć kolekcję MongoDB i powrotu na podstawie params

W moim pliku html, robię

<div ng-controller = "myController as myCtrl"> 
{{myCtrl.warnings}} 
{{myCtrl.getWarnings("123 Test Street, TestCity, TestState")}} 
</div> 

w moim pliku app.js:

Warnings = new Mongo.Collection("Warnings"); 

if (Meteor.isClient) { 
    var app = angular.module('ffprototype', [ 'angular-meteor' ]); 

    app.controller('myController', ['$window','$meteor', function($window, $meteor) { 

    this.warnings = $meteor.collection(Warnings); 

    this.getWarnings = function(findByAddress){ 
     Warnings.find({address: findByAddress}).fetch(); 
    } 
    }]); 
} 

moja kolekcja MongoDB:

{ 
    "_id": "3ixgxEMZDWGtugxA7", 
    "address": "123 Test Street, TestCity, TestState", 
    "warning": "Warning 1" 
} 
{ 
    "_id": "HZH5FvCD5driBYSJz", 
    "address": "123 Test Street, TestCity, TestState", 
    "warning": "Warning 2" 
} 

Wyjście ze strony internetowej html pokazuje całą kolekcję Ostrzeżenia (dzięki {{currentDispatch.warnings}}, ale nic nie zostanie wyświetlona na {{currentDispatch.getWarnings("123 Test Street, TestCity, TestState")}}

Odpowiedz

6

Należy użyć $meteor.object tego

this.getWarnings = function(findByAddress){ 
    $meteor.object(Warnings, { address: findByAddress }, false); // passing false here to not update the collection from changes in the client 
} 
+0

Jeśli to zrobię, czy nie stracę funkcji automatycznego publikowania? 'this.warnings = $ meteor.collection (Ostrzeżenia); automatycznie przekazuje aktualizacje do bazy danych, ale kiedy muszę" wrócić "coś nie jest stracone? –

+0

masz rację, zobacz moją edycję – tmaximini

+0

dzięki. Spróbuję tego, kiedy wrócę do domu, a jeśli to zadziała, to zaakceptuję, a otrzymasz punkty –

0

Od kątowej-meteor docs, to wygląda na to, że niedługo przestanie być używane jako $meteor.object.

Nie ma potrzeby, aby $meteor.object już można było używać funkcji Mongo Collection o nazwie findOne, tak jak.

Stary kod:

$scope.party = $meteor.object(Parties, $stateParams.partyId); 

Nowy Kod:

$scope.helpers({ 
    party() { 
    return Parties.findOne($stateParams.partyId); 
    } 
}); 

Bardziej szczegółowe bind one tutorial.

Powiązane problemy