0

在 Mongo FIND( regexp ) 中,找到的记录数与 Meteor 不同。

MongoDB端:

> db.products.find({name:/clp/ig}).count()
4

chrome js控制台:

> products.find({name:/clp/ig}).count()
2

数据很简单:

{ "_id" : ObjectId("514d39f087696bb4cc3b549d"), "code" : "P615", "name" : "PENNASOL         WERKZEUGMASCHINENGETRIEBEOEL CLP 68" }
{ "_id" : ObjectId("514d39f087696bb4cc3b549e"), "code" : "P616", "name" : "PENNASOL         WERKZEUGMASCHINENGETRIEBEOEL CLP 100" }
{ "_id" : ObjectId("514d39f087696bb4cc3b549f"), "code" : "P617", "name" : "PENNASOL         WERKZEUGMASCHINENGETRIEBEOEL CLP 150" }
{ "_id" : ObjectId("514d39f087696bb4cc3b54a0"), "code" : "P618", "name" : "PENNASOL         WERKZEUGMASCHINENGETRIEBEOEL CLP 220" }

收藏

var products = new Meteor.Collection('products');

Meteor.publish( 'products', function(){
  products.find();
});

可能是一个错误?在哪里?

ps:在不同的电脑上检查。同样的魔法。

4

2 回答 2

0

所有数据都太旧(可能是年份)。

products.find({name:/clp/ig}).fetch();

答案是:

P615   PENNASOL WERKZEUGMASCHINENGETRIEBEOEL CLP 68
P617   PENNASOL WERKZEUGMASCHINENGETRIEBEOEL CLP 150

其他

products.find({name:/clp 220/ig}).fetch();

答案是

P618   PENNASOL WERKZEUGMASCHINENGETRIEBEOEL CLP 220

这是真正的魔法。

于 2013-10-04T14:14:04.783 回答
0

当您拨打电话时,数据可能尚未在客户端上。你在任何地方使用它吗?数据仅在使用时才被获取,因此当您find在客户端执行此操作时,您会得到已经存在的结果,而其他项目只是通过网络开始。

要测试是否是这种情况:

  • 在服务器上执行相同的查找(Meteor.startup例如)并记录结果。
  • 在客户端,执行Products.find({}).fetch();. 稍等片刻,然后进行查询。
于 2013-10-04T08:24:57.843 回答