Meteor应用程序不在部署中播种db

时间:2015-07-24 11:34:09

标签: mongodb meteor reactjs

我有一个流星应用程序,它在启动时会播放一个mongo db文件:

Meteor.startup(function () {
  Dynamics.remove({});
  Dynamics.insert({ name : "voteTimer", time : 0 });
  Dynamics.insert({ name : "winningWord", content : "" });
});

这些在React组件中调用,例如:

getMeteorData() {
  return {
    winningWord: Dynamics.findOne({name: "winningWord"}).content
  }
},

在我的本地机器上,这很好用。然而,一旦通过meteor部署部署,应用程序崩溃:   Cannot read property 'content' of undefined

这表示Dynamics集合中没有文档。更奇怪的是,我仍然可以在chrome dev控制台中访问这些变量。

1 个答案:

答案 0 :(得分:1)

即使您启动在启动时插入项目,这些插入也是异步的,您的组件getMeteorData可能仍会尝试在插入文档之前获取文档。由于getMeteorData是被动的(我认为),您只需要检查您的findOne是否返回正确的文档,它应该在文档准备好后立即生效:

getMeteorData() {
  var dynamic = Dynamics.findOne({name: "winningWord"});
  if (dynamic) {
    return {
      winningWord: dynamic.content
    }
  }
  return {winningWord:""}; // whatever
},