angular-meteor 根据参数查找 MongoDb 集合并返回

Posted

技术标签:

【中文标题】angular-meteor 根据参数查找 MongoDb 集合并返回【英文标题】:angular-meteor find MongoDb collection and return based on params 【发布时间】:2015-07-20 08:49:21 【问题描述】:

我正在尝试使用 Meteor 和 Angular.js 的组合在我的 MongoDb 中获取某个地址的警告

在我的html文件中,我正在做

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

在我的 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();
    
  ]);

我的 mongoDb 集合:


    "_id": "3ixgxEMZDWGtugxA7",
    "address": "123 Test Street, TestCity, TestState",
    "warning": "Warning 1"


   "_id": "HZH5FvCD5driBYSJz",
    "address": "123 Test Street, TestCity, TestState",
    "warning": "Warning 2"

html 网页的输出显示了整个警告集合(感谢 currentDispatch.warnings,但对于 currentDispatch.getWarnings("123 Test Street, TestCity, TestState"),没有显示任何内容

【问题讨论】:

【参考方案1】:

您应该为此使用$meteor.object

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

【讨论】:

如果我这样做,我不会失去自动发布功能吗? this.warnings = $meteor.collection(Warnings); 会自动将更新推送到数据库,但是当我必须“返回”某些东西时,这不是丢失了吗? 谢谢,我回家后会试试这个,如果可行,我会接受,你会得到你的积分 根据文档:A service that wraps a Meteor object to enable reactivity within AngularJS. Finds the first document that matches the selector, as ordered by sort and skip options. Wraps collection.findOne 我需要所有匹配,而不仅仅是“findOne”功能。 @Matt Westlake 如果您需要所有匹配项,请执行相同操作,但使用 $meteor.collection: this.getWarnings = function(findByAddress) $meteor.collection(Warnings.find( address: findByAddress ), 错误的); @Urigo 我尝试了你所拥有的并得到了TypeError: The first argument of $meteorCollection must be a function or a have a find function property.【参考方案2】:

从 angular-meteor docs 看来,$meteor.object 似乎很快就会被弃用。

不再需要$meteor.object,因为我们可以像这样使用Mongo Collection的findOne函数。

旧代码:

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

新代码:

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

更详细的bind one tutorial。

【讨论】:

以上是关于angular-meteor 根据参数查找 MongoDb 集合并返回的主要内容,如果未能解决你的问题,请参考以下文章

初识Angular-Meteor(Angular-Meteor使实时全栈更简单)

Angular-Meteor - 如何在基于包的设计中包含 ng 模板?

ES6 angular-meteor ng-table getData 函数未调用

Datepicker周视图[关闭]

Meteor Angular UI.Router 链接的语法要求是啥?

时间和日期的查找