我在ibm bluemix中创建了我的第一个应用程序并添加了服务mongodb:
{
"mongodb-2.4": {
"name": "mongodb-27",
"label": "mongodb-2.4",
"plan": "100",
"credentials": {
"hostname": "192.****.15",
"host": "192.****.15",
"port": 10021,
"username": "7d5be****9358a",
"password": "aede****dce9a",
"name": "43c5a237-9f3a-4df0-85f7-4df9a2d26a5d",
"db": "db",
"url": "mongodb://7d5be****9358a:aede****dce9a@192.****.15:10021/db"
}
}
}
然后我尝试使用mongoose绑定mongodb服务:
var db;
if (process.env.VCAP_SERVICES) {
var env = JSON.parse(process.env.VCAP_SERVICES);
if (env['mongodb-2.2']) {
db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
console.log ("Connected to mongodb-2.2 service");
}
if (env['mongodb-2.4']) {
db = mongoose.createConnection(env['mongodb-2.4'][0].credentials.url);
console.log ("Connected to mongodb-2.4 service");
}
} else {
db = mongoose.connect('mongodb://7d5be****9358a:aede****dce9a@192.155.243.15:10021/db');
}
但它不起作用。我使用mongodb-2.2和mongodb-2.4服务做了两个选项,因为所有教程都有mongodb-2.2但我看到我的是2.4
我想使用mongoose + ember创建一个带有REST API的应用程序,但我需要解决数据库连接问题。
答案 0 :(得分:0)
你可以尝试下面的方法,它会删除明确提到mongodb版本的依赖:
/*var mongoUrl; */
var db;
if (process.env.VCAP_SERVICES)
{
var env = JSON.parse(process.env.VCAP_SERVICES);
for (var svcName in vcapServices)
{
if (svcName.match(/^mongo.*/))
{
db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
console.log ("Connected to mongodb-2.2 service");
/*
mongoUrl = vcapServices[svcName][0].credentials.uri;
mongoUrl = mongoUrl || vcapServices[svcName][0].credentials.url;
break; */
}
}
/*var mongo = require('mongoskin'); /
/*var db = mongo.db(mongoUrl, {native_parser:true}); */
P.S:通过评论代码,我曾尝试使用替代方法通过Bluemix与mongodb建立连接,你可以尝试两种方式..
另外,我建议使用如下的package.json条目:
"mongodb": "*",
"mongoskin": "*"
答案 1 :(得分:0)
您可以以优化的方式使用env变量VCAP_SERVICE来匹配mongodb版本。 如下所示:
for (var svcName in vcapServices)
{
if (svcName.match(/^mongo.*/)){
if (env['mongodb-2.2']) {
db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
console.log ("Connected to mongodb-2.2 service");
}
if (env['mongodb-2.4']) {
db = mongoose.createConnection(env['mongodb-2.4'][0].credentials.url);
console.log ("Connected to mongodb-2.4 service");
}
} else {
db = mongoose.connect('mongodb://7d5be****9358a:aede****dce9a@192.155.243.15:10021/db');
}
这里有一些有用的链接> http://ryanjbaxter.com/2014/03/03/moving-an-existing-node-js-app-to-run-on-bluemix/ http://blog.mongodb.org/post/6587009156/cloudfoundry-mongodb-and-nodejs