$meteor.collection 没有 return Collection
$meteor.collection doesn't return a Collection
在 Angular-Meteor tutorial step 9 之后,我正在尝试创建一个使用 Meteor collection 的 Angular 指令。
此文件位于根文件夹中:
TicTacToeBoards = new Meteor.Collection("tic_tac_toe_boards");
if (Meteor.isServer) {
Meteor.publish('TicTacToeBoards', function() { return TicTacToeBoards.find(); });
}
此文件位于 /client 文件夹中:
angular.module('TicTacToe').directive('tictactoegraph', function() {
return {
templateUrl: 'client/graph/tictactoegraph.ng.html',
scope: true,
controller: function($scope, $meteor, Sigma, TicTacToeClass) {
$scope.TicTacToeBoards = false;
$meteor.subscribe('TicTacToeBoards').then(function(subscriptionHandle){
$scope.TicTacToeBoards = $meteor.collection(TicTacToeBoards);
});
},
link: function($scope, element, attrs) {
// TODO: Ask SO if there's a better way to wait on the subscription....
$scope.$watch('TicTacToeBoards', function(newValue, oldValue) {
if ($scope.TicTacToeBoards) {
console.log($scope.TicTacToeBoards); // An array of objects.
var nextBoards = $scope.TicTacToeBoards.find({ numberOfMoves: 0 });
}
});
}
}
}
不幸的是,它给出了一个错误:
TypeError: $scope.TicTacToeBoards.find is not a function
看来 $scope.TicTacToeBoards
不是 Mongo 游标,而是 TicTacToeBoards.find() 会 return 的 objects 数组。为什么不是光标?
你是对的,$meteor.collection 不是 return 游标,它 return 是一个 AngularMeteorCollection 类型的数组,它是不同的:
http://angular-meteor.com/api/AngularMeteorCollection
之所以这样做,是因为我们想为 Angular 开发人员提供一个常规数组,其中 API 可以轻松使用。
虽然向该数组添加 find
函数是一个有趣的想法。
是否想将该功能用于 return 过滤对象?
您可以为此使用过滤器,但也许我们也可以添加此选项
在 Angular-Meteor tutorial step 9 之后,我正在尝试创建一个使用 Meteor collection 的 Angular 指令。
此文件位于根文件夹中:
TicTacToeBoards = new Meteor.Collection("tic_tac_toe_boards");
if (Meteor.isServer) {
Meteor.publish('TicTacToeBoards', function() { return TicTacToeBoards.find(); });
}
此文件位于 /client 文件夹中:
angular.module('TicTacToe').directive('tictactoegraph', function() {
return {
templateUrl: 'client/graph/tictactoegraph.ng.html',
scope: true,
controller: function($scope, $meteor, Sigma, TicTacToeClass) {
$scope.TicTacToeBoards = false;
$meteor.subscribe('TicTacToeBoards').then(function(subscriptionHandle){
$scope.TicTacToeBoards = $meteor.collection(TicTacToeBoards);
});
},
link: function($scope, element, attrs) {
// TODO: Ask SO if there's a better way to wait on the subscription....
$scope.$watch('TicTacToeBoards', function(newValue, oldValue) {
if ($scope.TicTacToeBoards) {
console.log($scope.TicTacToeBoards); // An array of objects.
var nextBoards = $scope.TicTacToeBoards.find({ numberOfMoves: 0 });
}
});
}
}
}
不幸的是,它给出了一个错误:
TypeError: $scope.TicTacToeBoards.find is not a function
看来 $scope.TicTacToeBoards
不是 Mongo 游标,而是 TicTacToeBoards.find() 会 return 的 objects 数组。为什么不是光标?
你是对的,$meteor.collection 不是 return 游标,它 return 是一个 AngularMeteorCollection 类型的数组,它是不同的: http://angular-meteor.com/api/AngularMeteorCollection
之所以这样做,是因为我们想为 Angular 开发人员提供一个常规数组,其中 API 可以轻松使用。
虽然向该数组添加 find
函数是一个有趣的想法。
是否想将该功能用于 return 过滤对象?
您可以为此使用过滤器,但也许我们也可以添加此选项