2016-03-02 69 views
1

我想更新一个集合,但我出于某种原因,即使它跟踪成功,当我在控制台中查看该集合它不会出现已更新。流星更新 - 即使它报告收集没有更新

下面是我在做什么:

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]”。

任何人有任何想法?

+0

您是否在浏览器控制台或命令行控制台上看到'成功'? – Alex028502

+1

我想你只能在客户端上调用Session.get。当它在客户端上运行该方法时,您可能会看到成功消息,但接下来会收到来自服务器的失败消息。 然后,它会将未修改的记录发送回客户端,并在您检查之前覆盖您所做的本地更改。 – Alex028502

回答

4

如果这是服务器和客户端的方法定义, 您不能在服务器端调用Session.get,以便在浏览器中调用时方法成功,但在服务器上调用时失败。如果您查看服务器控制台,则应该会看到服务器错误:Session is not defined对应于浏览器控制台中的500错误。

尝试加入网站ID的方法PARAM,并去除得到它从会话行:

minisiteUpdater: function(vLayout,vColour,vBG,vHFont,vBFont,vFontColour, siteID){ 
    var updates = { $set: { 
    layout: vLayout, 
    colour: vColour, 
    backgroundimage: vBG, 
    headingfont: vHFont, 
    bodyfont: vBFont, 
    fontcolour: vFontColour 
    }}; 

    Therapistminisite.update(siteID, updates, function (error) { 
    if (error){ 
     console.log(error); 
    } 
    else{ 
     console.log("success"); 
    } 
    }); 
}, 

(删除此行:var siteID = Session.get("currentSiteBuilderID");

,然后在Session.get("currentSiteBuilderID")传递,当你打电话它来自这样的客户端:

Meteor.call(
    'minisiteUpdater', 
    vLayout, 
    vColour, 
    vBG, 
    vHFont, 
    vBFont, 
    vFontColour, 
    Session.get("currentSiteBuilderID") 
); 
+0

谢谢亚历克斯 - 这是做伎俩:-) – aragorn23