我有这段代码
$scope.users = $meteor.collection( function() {
return AllClients.find({}, {name: 1, _id: 0});
});
我希望返回一个像这样的值
/* 1 */
{
"name" : "Samsung"
}
/* 2 */
{
"name" : "HP"
}
但它仍然会返回一个像这样的值
/* 1 */
{
"_id" : "SqFP23zTXo6MqDLxP",
"code" : "A100",
"name" : "Samsung",
"address" : "Korea"
}
/* 2 */
{
"_id" : "8QtNBoBGrvv5wWpuZ",
"code" : "B100",
"name" : "HP",
"address" : "USA"
}
这是一个错误吗?或者编码不好......
答案 0 :(得分:0)
首先,如果您不希望客户端提供其他信息,那么您需要在服务器端完成工作。这是使用发布方法处理的。
首先,删除autopublish:
> meteor remove autopublish
然后,您可以在服务器文件夹中创建发布方法:
Meteor.publish('clientNames', function() {
return AllCients.find({}, {fields: {name: 1} });
});
此发布方法将查找所有客户端并仅允许名称字段,请记住,您仍然可以获得_id字段,我相信它始终会被发送。
然后在您的客户端,您需要订阅它:
$scope.$meteorSubscribe('clientNames').then(function() {
$scope.users = $scope.$meteorCollection(AllClients, false);
});
使用meteor,当您从客户端访问信息时,仅可以访问服务器允许您访问的内容。在这种情况下,您可以请求AllCients
而不是拥有所有信息,因为服务器不允许这样做。