编辑:这个问题,一些答案,以及一些评论,包含了很多错误的信息.见流星收集,发布和预订是如何工作的出版的准确理解和订阅到同一台服务器收集的多个子集.
如何在服务器上发布单个集合的不同子集(或"视图")作为客户端上的多个集合?
这里有一些伪代码来帮助说明我的问题:
items 在服务器上的集合假设我items在服务器上有一个包含数百万条记录的集合.我们还假设:
enabled属性设置为true,和;processed属性设置为true.所有其他人都设置为false.
items:
{
"_id": "uniqueid1",
"title": "item #1",
"enabled": false,
"processed": false
},
{
"_id": "uniqueid2",
"title": "item #2",
"enabled": false,
"processed": true
},
...
{
"_id": "uniqueid458734958",
"title": "item #458734958",
"enabled": true,
"processed": true
}
Run Code Online (Sandbox Code Playgroud)
让我们发布同一服务器集合的两个"视图".一个将发送一个包含50个记录的游标,另一个将向下发送一个包含100个记录的游标.在这个虚构的服务器端数据库中有超过4.58亿条记录,客户端不需要知道所有这些(事实上,在这个例子中将它们全部发送下去可能需要几个小时):
var Items = new Meteor.Collection("items");
Meteor.publish("enabled_items", function () {
// Only 50 "Items" have enabled set to true
return Items.find({enabled: …Run Code Online (Sandbox Code Playgroud) 为什么以下代码:
<?php echo preg_replace("/(.*)/", "$1.def", "abc");
Run Code Online (Sandbox Code Playgroud)
输出abc.def.def而不是abc.def?
我很想知道重复发生的原因.
使用/(.+)/或/^(.*)$/按预期工作,但我不是在寻找解决方案,只是问一个问题(虽然这些模式可能与答案有关).
在这里修改现场版.