如何为部署到Heroku的节点+ mongo应用程序播种数据?

时间:2015-08-19 18:41:03

标签: node.js mongodb heroku mlab seeding

我有一个MongoDB的节点表达应用程序作为数据库。我想有一个seed.js文件,我可以运行它来填充数据库的初始数据。我在当地的机器上做这个没问题。我只是在seed.js文件中编写mongo命令并使用:

运行它
$ mongo mongodb://heroku_xxxx:xxxxx.mongolab.com:xxx/heroku_xxxx seed.js 

MongoDB shell version: 3.0.5
connecting to: mongodb://heroku_xxxxxxxx
2015-08-19T21:44:22.694+0100 E QUERY    Error: More than one ':' detected. If this is an ipv6 address, it needs to be surrounded by '[' and ']'; heroku_xxxxxxxxxxxxx
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

然而,当我将我的应用程序部署到Heroku(包括MongoLab)时,我不确定如何在那里播种数据。谷歌大部分时间都把我引向铁轨。

在没有编写脚本的情况下,是否有一种简单的为Heroku MongoLab播种数据的方法?

更新: 如果我尝试使用heroku的MONGOLAB_URI运行它,我会收到错误。

for i in range(0, 5):
  X = 0
  for j in range(0, 5):
    X = (X*10)+1
  print(X)

2 个答案:

答案 0 :(得分:5)

这里有完整的答案如何使用mongo命令为部署到Heroku的应用程序运行seed.js文件,感谢pneumee和hunterloftis:

  1. 通过在应用目录
  2. 中运行$ heroku config来获取您的MONGOLAB_URI
  3. MONGOLAB_URI变量的格式为mongodb://user:pass@host:port/db。 使用这些不同的部分将正确的终端命令粘在一起以运行seed.js文件:

    $ mongo host:port/db -u user -p pass yourSeedFile.js
    

答案 1 :(得分:0)

如果您运行heroku config -a yourapp,您将看到mongolab实例的连接字符串。然后,您可以通过本地使用的同一mongo客户端连接到该数据库,并运行相同的seed.js