gpt4 book ai didi

javascript - 部署后辅助函数中 mongodb 属性中的 Meteor Session.set() 不起作用

转载 作者:行者123 更新时间:2023-12-02 17:52:00 24 4
gpt4 key购买 nike

我正在尝试从 mongodb 中的属性设置 session 。我在本地工作,但部署后我在控制台中收到此错误,并出现白屏死机。

Exception from Deps recompute: TypeError: Cannot read property 'siteTheme' of undefined

// helper
Handlebars.registerHelper("site", function(){
host = headers.get('host');
theSite = Site.findOne({'domain': host});
theme = theSite.siteTheme;
// Problem - Works locally, not deployed with mup.
// Exception from Deps recompute: TypeError: Cannot read property 'siteTheme' of undefined
Session.set("theme", theme);

return theSite;
});



// Add theme class to html

siteTheme0 = function(){
$('html').addClass('theme0');
};
siteTheme1 = function(){
$('html').addClass('theme1');
};
siteTheme2 = function(){
$('html').addClass('theme2');
};
siteTheme3 = function(){
$('html').addClass('theme3');
};


// Change theme on change to db

Deps.autorun(function (c) {

if (Session.equals("theme", "1")){
siteTheme1();
}
else if (Session.equals("theme", "2")){
siteTheme2();
}
else if (Session.equals("theme", "3")){
siteTheme3();
}
else {
Session.set("theme", "0");
siteTheme0();
}
});

最佳答案

这是使用meteor时最常遇到的问题之一。当调用您的帮助程序时,您的集合数据尚未准备好(或者它不存在),因此 Site.findOne 返回 undefined 并且您无法访问 未定义的siteTheme。请参阅我对 this question 的回答。基本上,您只需要添加某种保护或返回语句并假设数据可能尚未准备好。例如:

Handlebars.registerHelper("site", function(){
var host = headers.get('host');
var theSite = Site.findOne({'domain': host});
if (theSite) {
var theme = theSite.siteTheme;
Session.set("theme", theme);
return theSite;
}
});

如果代码的其余部分编写正确,您的模板应该在数据准备好后立即再次呈现。

关于javascript - 部署后辅助函数中 mongodb 属性中的 Meteor Session.set() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273231/

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