AngularJS meteor mongo集合键值

时间:2015-10-13 15:20:22

标签: javascript mongodb meteor angular-meteor meteor-collections

我有这段代码

$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"
}

这是一个错误吗?或者编码不好......

1 个答案:

答案 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而不是拥有所有信息,因为服务器不允许这样做。