流星" $ in"运营商未使用"限制"

时间:2016-09-27 16:27:26

标签: mongodb meteor

我有一个约10,000件物品的数据库。关于搜索,我得到了10个ID的数组。

例如:

getProduct("pizza") --> [ "rjxyykii7gx9MQYZb", "JCh45MFwQHEHXRG3s", "FLRkf5jQDMLef4wzL", "76BbqHMumrpQ8u9h6", "4Mfr4EbrmiexA6tgG", "QT4mqbK59BpsR8nPj", "HnNEBaBPf3kGJeg47", "fjJJtZbYFXF9RBCep", "LrBhnTMxgA2mwpYmB", "CXEwwxWDQYgiGKEpG"]

现在我想要保存资源,设置10个项目的限制

服务器:

Meteor.publish("artikel", function () {
    return Artikel.find({}, {limit: 10});
});

客户端:

Meteor.subscribe('artikel');

但现在我没有结果列表:

var cursor = Artikel.find({_id: {$in: idArray}});
    cursor.count(); //--> 0

如果我使用我的数据库工具,我会得到相同的值,10个结果

db.artikel.find({_id: { $in: [ "rjxyykii7gx9MQYZb", ... ] } }).limit(10).count() //--> 10
我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

问题是您是否向客户发布了10条记录。您的计数返回0的原因是您发布的十个记录在idArray中的可能性非常小。你希望你的$ in在发布函数中,就像这样(我也会添加一个跳过):

// server
Meteor.publish("artikel", function (idArray, skip) {
    return Artikel.find({_id: {$in: idArray}}, {limit: 10, skip: skip});
});

然后在客户端:

// client
Meteor.subscribe('artikel', idArray, skip);

Artikel.find({}).count() // --> 10