2015-05-09 12 views
7

tôi đang cố gắng để có được những cảnh báo cho một địa chỉ nhất định trong MongoDB của tôi, sử dụng một sự kết hợp của Meteor và Angular.jsgóc-thiên thạch tìm thấy bộ sưu tập MongoDB và gửi lại dựa vào thông số

Trong file html của tôi, tôi đang làm

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

trong tập tin app.js tôi:

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

bộ sưu tập MongoDB tôi:

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

Kết quả từ trang web html cho thấy toàn bộ bộ sưu tập Warnings (nhờ {{currentDispatch.warnings}}, nhưng không được hiển thị cho {{currentDispatch.getWarnings("123 Test Street, TestCity, TestState")}}

Trả lời

6

Bạn nên sử dụng $meteor.object cho điều này

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

Nếu tôi làm điều này, tôi sẽ không làm mất các tính năng tự động xuất bản? 'this.warnings = $ meteor.collection (Cảnh báo);' tự động cập nhật cơ sở dữ liệu, nhưng khi tôi phải "trả lại" cái gì đó không bị mất? –

+0

bạn đã đúng, xem chỉnh sửa của tôi – tmaximini

+0

cảm ơn tôi sẽ thử điều này khi tôi về nhà và nếu công trình này tôi sẽ chấp nhận và bạn sẽ nhận được điểm của bạn –

0

Từ góc-sao băng docs, nó xuất hiện rằng $meteor.object sẽ sớm không còn được dùng nữa.

Không cần $meteor.object nữa vì chúng tôi có thể sử dụng chức năng findOne của Mongo Collection, như vậy.

Cũ mã:

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

Mã mới:

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

chi tiết hơn bind one tutorial.

Các vấn đề liên quan