2014-02-08 6 views
7

루프백 버전을 사용하고 있습니다. 1.6 로컬 MongoDB를 서버를 사용하여 개발을 위해 실행해야 그 다음 데이터 소스 구성 :StrongLoop을 구성하는 방법 Heroku에 배치하기위한 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) { 
    }); 
    }); 
}); 

그래서 나는 Heroku가 연결 문자열을 매핑하는 내 데이터 소스 JSON에해야 할 변화의 어떤 종류의?

답변

5

환경 변수 및 기타 소스의 데이터 소스/모델 구성을 지원하는 루프백의 TODO입니다. 하나의 아이디어는 템플릿 엔진을 사용하여 datasources.json을로드하여 런타임에 해결할 변수를 가질 수 있도록하는 것입니다.

LoopBack을 사용하면 'url'속성을 사용하여 데이터 소스를 구성 할 수 있습니다. 예를 들어 : Heroku가이 process.env.MONGOLAB_URI 또는 ​​process.env.MONGOHQ_URL와 URL 값을 대체하기위한 해결 방법으로

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

, 당신은 배포 후 스크립트를 작성할 수 있습니다.

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

한편, https://github.com/strongloop/loopback/issues에서 문제를 열어주십시오.

+0

감사합니다. Raymond, url 속성이 핵심 요소였습니다. 나는 Heroku 문서에서 mongolab 연결 URL을 생성 할 수있었습니다 : [연결 UR 얻기] (https://devcenter.heroku.com/articles/mongolab#getting-your-connection-uri) - LoopBack 지원을 기대합니다. env vars하지만 이것은 현재 작동 할 것입니다. 감사. – user2808320

7

이 지금 (6 월 (27) 2014) addressed있다 : (mongodb 데이터 원본 이름) 다음과 같은 내용으로 파일 datasources.local.js을 만듭니다

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

나는 datasources.json을 제거하고 다음과 같이 datasources.local.js 파일을 추가했습니다 : 'var postgresURI = process.env.DATABASE_URL; module.exports = { DB : { defaultForType 'PostgreSQL의' 커넥터 : 'PostgreSQL의' URL : postgresURI } }'모델 config.json에서 내가 "데이터 소스를"가 " db "를 모든 섹션에 설정합니다. 다음과 같은 오류가 발생합니다 :'사용자가 존재하지 않는 dataSource : "db"'를 참조하고 있습니다. 나는 오류를 이해하지만 그것이 던져지고있는 이유. 내가 뭘 놓치고 있니? – Lee

+2

datasources.json이 비어 있어도 여전히 필요합니다. – mancvso

+2

.js가 json 구성에 추가 된 것임을 알기 몇 시간을 보냈습니다. 따라서 json이로드되면 .js 파일을 사용하여 값을 덮어 쓸 수 있습니다. – Arne