gpt4 book ai didi

meteor - 如何在 Meteor 中进行基于参数的发布并删除旧的订阅文档?

转载 作者:行者123 更新时间:2023-12-04 14:01:34 24 4
gpt4 key购买 nike

我想在 Meteor 中实现基于参数的发布,但我遇到了一些问题。

这是我所拥有的。

当用户键入订阅发布并传递输入值的 keyup 事件时。

'keyup #customerSearch': function(event, template){
var keyword = template.find('#customerSearch').value;
if(keyword){
if(keyword.length >= 3){
Meteor.subscribe('sessioncustomers', keyword);
}
}
}

发布使用此关键字返回记录。

Meteor.publish("sessioncustomers", function(keyword){
if(keyword ){
if(keyword.length >= 3){
query.name = new RegExp(regExpQuoted(keyword), 'i' );
Customers.find(query);
} else {
return null;
}
}else{
return null;
}
});

问题。
它起作用并且接收文档,除非客户端更改关键字,或者更确切地说,当关键字更改时,出版物发布与关键字匹配的附加文档,但客户端集合从不删除旧文档。

如何从客户端集合中获取不再匹配的旧文档?

我以为是因为订阅的参数发生了变化,不匹配的文档会被取消订阅,只有新的匹配文档会被订阅。

最佳答案

在您的 keyup回调您需要“取消订阅”之前的发布,
否则你会保留旧文件。

var sessionCustomersHandler = false;
'keyup #customerSearch': function(event, template) {
var keyword = template.find('#customerSearch').value;

if (keyword && keyword.length >= 3)
var newSessionCustomersHandler = Meteor.subscribe('sessioncustomers', keyword);

if (sessionCustomersHandler)
sessionCustomersHandler.stop();

sessionCustomersHandler = newSessionCustomersHandler;
}

此外,别忘了 check(keyword, String)在您的发布功能中,为了安全。

Meteor.publish("sessioncustomers", function(keyword){
check(keyword, String)

if (keyword.length >= 3)
return Customers.find({
name: new RegExp(regExpQuoted(keyword), 'i' )
});
});

关于meteor - 如何在 Meteor 中进行基于参数的发布并删除旧的订阅文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19204993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com