我有一个约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
我做错了什么?谢谢。
答案 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