无法访问Angular-Meteor中的集合

时间:2016-02-05 10:24:50

标签: javascript angularjs mongodb meteor angular-meteor

我正在尝试使用Angular-Meteor中的Collection中的数据,但到目前为止我无法访问它。

lib / collections.js 中我定义了集合:

UserMeta = new Mongo.Collection('userMeta');

server / publish.js 发布它:

Meteor.publish('userMeta', function() {
  return UserMeta.find();
});

在我的客户端代码 client / scripts / controllers / settings.controller.js 我订阅:

angular
  .module('App')
  .controller('SettingsCtrl', SettingsCtrl);

function SettingsCtrl($scope, $reactive) {
  $reactive(this).attach($scope);
  this.subscribe('userMeta');
  //...
}

我发现似乎有多种订阅方式(甚至在Angular-Meteor的官方教程中使用不一致),但我决定使用v.1.3.2的最新语法:{{3} }

但是如果我想查看集合的整个内容,它会返回一个空数组:

console.log(UserMeta.find().fetch()); // =[]

或者:

console.log(UserMeta.findOne()); // =undefined

但是,如果我在浏览器的客户端控制台中运行这些命令,则会返回预期的结果。

有人可以给我一个简短的例子,我如何使用我的收藏品?我已经习惯了(纯粹的)Meteor处理这个问题,我很困惑它在Angular-Meteor中看起来并不那么简单。

2 个答案:

答案 0 :(得分:0)

尝试使用

Meteor.Methods

在服务器端调用

Meteor.methods({
getUserMeta: function () {
 var data = UserMeta.find({}).fetch();
 return data;
}

所有使用

在服务器端调用此方法
 Meteor.call('getUserMeta',function (err, data) {
   if (!err) {
     Console.log(data);
   } else {
     console.log("error");
   }
});

答案 1 :(得分:0)

在console.log中使用Collection时,它还没有准备好,也没有任何数据。 您可以在帮助程序中使用console.log,或者您应该检查集合是否已准备就绪:

this.dragSrcEl = e;