gpt4 book ai didi

javascript - 在 Meteor session 期间更新订阅数据

转载 作者:行者123 更新时间:2023-11-28 06:36:21 24 4
gpt4 key购买 nike

我正在尝试更新传递给 Meteor 中的订阅参数的 id - 简而言之,我想使用当前 url 中的 id 订阅任何 Collection 对象。我可以在第一次加载时发生这种情况,但在创建新对象并且用户在 session 中路由到该新对象时则不会发生这种情况。

我能够让它模糊地工作的唯一方法是使用 setInterval 进行黑客攻击 - 我知道这不太好,所以我正在寻找正确的 Meteor 方法。

目前我在 server 中的 publications.js 是:

Meteor.publish('shares', function(id){
return Shares.find({_id:id});
});

router.js

Router.route('/share-social/:_id', {
name: 'shareSocial',
data: function() { return Shares.findOne(this.params._id); }
});

并通过client中的main.js订阅:(即获取url中的id,然后订阅它)

setInterval(function(){
var x = location.href.split('/');
var id = x.slice(-1).pop();
Meteor.subscribe('shares', id);
}, 100);

最后是模板助手:

Template.shareSocial.helpers({
shares: function() {
return Shares.find().fetch();
}
});

上述显然有其问题。如何以 react 方式仅订阅当前 url 中显示的 id 的对象,无论它是在同一 session 还是新 session 中?

谢谢!

最佳答案

您可以通过将当前 id 定义为 session 变量来为您的订阅设置 react 源,而不是从 URL 中分割 id,例如:

// router.js
Router.route('/share-social/:_id', function() {
Session.set('id', this.params._id);
this.render('shareSocial');
});

// main.js
Tracker.autorun(function() {
Meteor.subscribe('shares', Session.get('id'));
});

现在,每次您更改路线的 ID 时, session 变量和订阅都会更新。

关于javascript - 在 Meteor session 期间更新订阅数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253296/

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