首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pencilblue编写mongodb Bluemix连接

用pencilblue编写mongodb Bluemix连接
EN

Stack Overflow用户
提问于 2017-05-04 10:24:09
回答 1查看 151关注 0票数 0

目前,我正在使用Bluemix部署和托管一个网站与PencilBlue。我的问题在于存储服务“合成蒙戈”与铅笔蓝框架的连接。这个连接是通过VCAP完成的。VCAP具有以下结构;

代码语言:javascript
复制
{
    "compose-for-mongodb": [
        {
            "credentials": {
                "db_type": "mongodb",
                "name": "**************************************",
                "uri_cli": "**************************************",
                "ca_certificate_base64": "*********************************************************************",
                "deployment_id": "*********************************",
                "uri": "******************************************************"
            },
            "syslog_drain_url": null,
            "label": "compose-for-mongodb",
            "provider": null,
            "plan": "***********",
            "name": "************************",
            "tags": [
                "big_data",
                "data_management",
                "ibm_created"
            ]
        }
    ]
}

据我所知,“”是一个集群,而不是服务器。我们需要通过VCAP在PencilBlue和这个“集群”之间建立连接。目前,我们正试图引导config.js中的JSON解析,如下所示:

代码语言:javascript
复制
 if (typeof process.env.VCAP_SERVICES === 'string') {
        try {
            var vcapServices = JSON.parse(process.env.VCAP_SERVICES);
            var vcapMongo = vcapServices['compose-for-mongodb'][0].credentials;

            var uri = vcapMongo.uri;

            mongoConfig.servers = [
                uri
            ];

            var userPassword = uri.split('mongodb://')[1].split('@')[0].split(':');

            mongoConfig.authentication = {
                un: userPassword[0],
                pw: userPassword[1]
            };

            var db = uri.split('?uri=')[0].split('/')[1];

            mongoConfig.options.mongos = {
                ssl: true,
                sslValidate: true,
                sslCA: [new Buffer(vcapMongo.ca_certificate_base64, 'base64')],
                poolSize: 1,
                reconnectTries: 1
            };

            mongoConfig.name = db;

我们尝试过多种方法,但都没有成功。

有人遇到这个问题了吗?有关于这个问题的文件吗?

复制步骤:

创建一个Bluemix应用程序,并将其与“”存储服务连接。

PencilBlue版本: 0.8.0

环境描述: Node.js SDK中的Bluemix和组合为mongodb服务连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-05 05:42:41

我有经验和成功地将铅笔蓝框架与NoSQL数据源(如)连接起来。这里有一个样品回购,它有一些方便的部署到bluemix按钮,它为您设置了一切--如果您想要一种统包方法(请注意:需要一些耐心:-),管道脚本包括一些硬编码延迟(~8分钟),以适应服务实例化带来的不确定性。对于您的特定问题,存储库的config.js应该会有所帮助。最后,该回购还使用这个回购中的Bluemix服务使用媒体提供者插件。

以下是一段节选:

代码语言:javascript
复制
[....]

try {
  var services = JSON.parse(process.env.VCAP_SERVICES);
  // look for a service starting with 'mysql'
  // MySQL is the only one supported by Ghost right now
  for (var svcName in services) {
      if (svcName.match(/^compose-for-mongodb/)) {
          mongoCreds = services[svcName][0]['credentials'];
          var uriObject = mongodbUri.parse(mongoCreds.uri)
          mongoCreds.host = uriObject.hosts[0].host
          mongoCreds.port = uriObject.hosts[0].port
          mongoCreds.user = uriObject.username
          mongoCreds.password = uriObject.password
          mongoCreds.client = 'mongo';
          mongoCreds.userpass = mongoCreds.user + ":" + mongoCreds.password + "@"
          mongoCreds.db = uriObject.database;
      }
  }
}

[....]

"db": {
        "type": mongoCreds.client,
        "servers": [
          "mongodb://" + mongoCreds.userpass + mongoCreds.host + ":" + mongoCreds.port
        ],
        "name": mongoCreds.db,
        "options": {
          "server": {
             "ssl": cloud,
             "sslValidate": cloud,
             "sslCert": Buffer.from(mongoCreds.ca_certificate_base64, 'base64').toString('ascii'),
             "sslCA" : [Buffer.from(mongoCreds.ca_certificate_base64, 'base64').toString('ascii')]
          }
        },
        "writeConcern": "majority",
        "query_logging": false,
        "authentication": {
          "un": mongoCreds.user,
          "pw": mongoCreds.password
        }
    },

[....]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43780253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档