我正在使用LoopBack ver。 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连接字符串?
答案 0 :(得分:7)
现在(截至2014年6月27日)已addressed:创建一个包含以下内容的文件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
文件中的配置。
答案 1 :(得分:5)
这是LoopBack的TODO,支持从环境变量和其他来源配置数据源/模型。一个想法是使用模板引擎加载datasources.json,以便它可以在运行时解析变量。
与您的问题相关,LoopBack允许您使用'url'属性配置数据源。例如:
{
"connector": "loopback-connector-mongodb",
"url": "mongodb://localhost:27017/mydb"
}
作为一种解决方法,您可以为Heroku编写部署后脚本,以使用process.env.MONGOLAB_URI或process.env.MONGOHQ_URL替换url值。
sed -i.bak s/MONGODB_URL/$MONGOHQ_URL/g datasources.json
同时,请在https://github.com/strongloop/loopback/issues处打开一个问题。