我想更新一个集合,但我出于某种原因,即使它跟踪成功,当我在控制台中查看该集合它不会出现已更新。流星更新 - 即使它报告收集没有更新
下面是我在做什么:
1)调用来自客户端的JavaScript函数的更新功能。所有的值都被正确地传递:
Meteor.call('minisiteUpdater',vLayout,vColour,vBG,vHFont,vBFont,vFontColour);
2)函数本身(在Meteor.methods定义)如下。请注意,当我在控制台中记录所有内容时,所有值都会成功传递到函数中,并且我从session var获取的siteID也被正确设置。问题在于控制台正在记录“成功”,这表明更新已经发挥作用,但是当我在之后将Therapistminisite.find()。fetch()放入控制台并查看所谓的更新收集项时,未更新。
minisiteUpdater: function(vLayout,vColour,vBG,vHFont,vBFont,vFontColour){
var updates = { $set: {
layout: vLayout,
colour: vColour,
backgroundimage: vBG,
headingfont: vHFont,
bodyfont: vBFont,
fontcolour: vFontColour
}};
var siteID = Session.get("currentSiteBuilderID");
Therapistminisite.update(siteID, updates, function (error) {
if (error){
console.log(error);
}
else{
console.log("success");
}
});
},
最后,就在我获得“成功”记录在控制台中,我也得到了以下错误消息:“错误调用方法‘minisiteUpdater’:内部服务器错误[500]”。
任何人有任何想法?
您是否在浏览器控制台或命令行控制台上看到'成功'? – Alex028502
我想你只能在客户端上调用Session.get。当它在客户端上运行该方法时,您可能会看到成功消息,但接下来会收到来自服务器的失败消息。 然后,它会将未修改的记录发送回客户端,并在您检查之前覆盖您所做的本地更改。 – Alex028502