我正在尝试使用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中看起来并不那么简单。
答案 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;