【问题标题】:Meteor application not seeding db in deploymentMeteor 应用程序未在部署中播种数据库
【发布时间】:2015-07-24 21:10:46
【问题描述】:

我有一个流星应用程序,它在启动时会播种一个 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
  }
},

在我的本地机器上这工作正常。然而,一旦通过流星部署部署,应用程序就会崩溃: Cannot read property 'content' of undefined

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

【问题讨论】:

    标签: mongodb meteor reactjs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 2015-11-08
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2014-07-29
      相关资源
      最近更新 更多