7

我正在使用 LoopBack 版本。1.6 并使用以下数据源配置运行本地 mongoDB 服务器进行开发:

  "mongodb": {
    "defaultForType": "mongodb",
    "connector": "loopback-connector-mongodb",
    "database": "xxxdbname",
    "host": "localhost",
    "port": "27017"
  },

现在我想部署到 Heroku,但我不知道如何配置数据源以指向 MongoLab 数据库,因为它有一个动态生成的连接字符串:

来自 Heroku dox:

var mongo = require('mongodb');

var mongoUri = process.env.MONGOLAB_URI ||
  process.env.MONGOHQ_URL ||
  'mongodb://localhost/mydb';

mongo.Db.connect(mongoUri, function (err, db) {
  db.collection('mydocs', function(er, collection) {
    collection.insert({'mykey': 'myvalue'}, {safe: true}, function(er,rs) {
    });
  });
});

那么我需要对我的数据源 JSON 进行哪些更改以映射 Heroku 连接字符串?

4

2 回答 2

7

现在(截至 2014 年 6 月 27 日)已经解决了这个问题:创建一个datasources.local.js包含以下内容的文件(mongodb您的数据源名称在哪里):

var mongoUri = process.env.MONGOLAB_URI ||
  process.env.MONGOHQ_URL ||
  'mongodb://localhost/mydb';

module.exports = {
  mongodb: {
    defaultForType: "mongodb",
    connector: "loopback-connector-mongodb",
    url: mongoUri
  }
};

注意: datasources.json仍然是必需的(可以为空)并且.js覆盖.json文件中的配置。

于 2014-11-09T15:50:38.330 回答
5

这是 LoopBack 的 TODO,用于支持从环境变量和其他来源配置数据源/模型。一种想法是使用模板引擎来加载 datasources.json 以便它可以在运行时解析变量。

与您的问题相关,LoopBack 允许您使用“url”属性配置数据源。例如:

{
   "connector": "loopback-connector-mongodb",
   "url": "mongodb://localhost:27017/mydb" 
}

作为一种解决方法,您可以为 Heroku 编写一个部署后脚本,将 url 值替换为 process.env.MONGOLAB_URI 或 process.env.MONGOHQ_URL。

sed -i.bak s/MONGODB_URL/$MONGOHQ_URL/g datasources.json

同时,请在https://github.com/strongloop/loopback/issues打开一个问题。

于 2014-02-09T06:06:47.603 回答