2015-05-09 5 views
7

Ich versuche Warnungen für eine bestimmte Adresse in meinem MongoDB zu bekommen, eine Kombination von Meteor und Angularjs mitWinkel Meteor MongoDB Sammlung finden und Rück basierend auf params

In meiner HTML-Datei, ich tue

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

in meiner app.js Datei:

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(); 
    } 
    }]); 
} 

meine MongoDB Sammlung:

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

Die Ausgabe von der HTML-Webseite zeigt die gesamte Sammlung Warnungen (dank {{currentDispatch.warnings}}, aber nichts für {{currentDispatch.getWarnings("123 Test Street, TestCity, TestState")}}

Antwort

6

angezeigt wird Sie $meteor.object für dieses

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

Wenn ich das tue, verliere ich nicht die Auto-Publish-Funktionen? the 'this.warnings = $ meteor.collection (Warnings);' schiebt Updates automatisch in die Datenbank, aber wenn ich etwas zurückgeben muss, ist das nicht verloren? –

+0

Sie sind richtig, sehen Sie meine Bearbeitung – tmaximini

+0

danke Ich werde es ausprobieren, wenn ich nach Hause komme und wenn das funktioniert, akzeptiere ich und Sie erhalten Ihre Punkte –

0

Von Winkel Meteor verwenden sollte docs es, erscheint, dass $meteor.object wird bald veraltet sein.

Es besteht keine Notwendigkeit mehr für $meteor.object, da wir die Funktion findOne der Mongo Collection verwenden können.

Alter Code:

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

Neuer Code:

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

Detailliertere bind one tutorial.

Verwandte Themen