Javascript AngularJS meteor mongo集合键值

Javascript AngularJS meteor mongo集合键值,javascript,mongodb,meteor,angular-meteor,meteor-collections,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"

我有这个密码

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

这是虫子吗?或者糟糕的编码…

首先,如果您不想在客户端获得其他信息,那么您需要在服务器端完成这项工作。这是使用发布方法处理的

首先,删除自动发布:

> meteor remove autopublish
然后,您可以在服务器文件夹中创建发布方法:

Meteor.publish('clientNames', function() {
    return AllCients.find({}, {fields: {name: 1} });
});
这个发布方法会找到所有的客户端,并且只允许name字段,请记住,您可能仍然会得到_id字段,我相信它总是被发送的

然后在客户端,您需要订阅它:

$scope.$meteorSubscribe('clientNames').then(function() {
    $scope.users = $scope.$meteorCollection(AllClients, false);
});

使用meteor,当您从客户端访问信息时,您只能访问服务器允许您访问的内容。在这种情况下,您可以请求
AllCients
,但不能获得所有信息,因为服务器不允许这样做。

尝试将字段投影为
var projection={name:1,\u id:0};返回AllClients.find({},{fields:projection})
正如@chridam所指出的,您需要提供一个,而不仅仅是字段。你的代码应该是
find({},{fields:{/*你的fields*/}})
。尝试了这个,但是我得到了一个游标错误…如果我回忆正确,你总是能得到_id
.find({},{字段:{name:1}})