如何配置StrongLoop LoopBack MongoDB数据源以部署到Heroku [英] How to configure StrongLoop LoopBack MongoDB datasource for deployment to Heroku

查看:242
本文介绍了如何配置StrongLoop LoopBack MongoDB数据源以部署到Heroku的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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



来自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连接字符串?

解决方案

这是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 上打开问题。

I'm using LoopBack ver. 1.6 and have a local mongoDB server running for development using he following datasource configuration:

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

Now I want to deploy to Heroku but I don't know how to configure the datasource to point at the MongoLab db since it has a dynamically generated connection string:

from the 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) {
    });
  });
});

So what kind of changes do I need to make to my datasource JSON to map the Heroku connection string?

解决方案

This is a TODO for LoopBack to support configuration of datasources/models from environment variables and other sources. One idea is to use a template engine to load datasources.json so that it can have variables to be resolved at runtime.

Related to your question, LoopBack allows you to configure the datasource using a 'url' property. For example:

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

As a workaround, you can write a post-deployment script for Heroku to replace the url value with process.env.MONGOLAB_URI or process.env.MONGOHQ_URL.

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

Meanwhile, please open an issue at https://github.com/strongloop/loopback/issues.

这篇关于如何配置StrongLoop LoopBack MongoDB数据源以部署到Heroku的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆