mongodb

时间:2015-11-15 22:59:54

标签: mongodb ibm-cloud strongloop

我使用loopback来设置API,在我的本地点击一个mongodb。一切都很好,而且一切正常。然后我试着把它移到bluemix。当我到达slc arc的步骤并使用composer时,每次我尝试检查数据库连接时,都会收到一条错误消息,指出“架构无效,预期mongodb”。

这是strongloop作曲家的完整错误:

Oops! Something is wrong
invalid schema, expected mongodb

Message: invalid schema, expected mongodb
Request: /workspace/api/DataSourceDefinitions/server.mongoDB/testConnection
Staus: 500
Error: invalid schema, expected mongodb
    at module.exports (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/url_parser.js:20:11)
    at connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/mongo_client.js:125:16)
    at Function.MongoClient.connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/mongo_client.js:109:3)
    at MongoDB.connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/lib/mongodb.js:113:25)
    at Object.initializeDataSource [as initialize] (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/lib/mongodb.js:70:26)
    at DataSource.setup (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-datasource-juggler/lib/datasource.js:332:17)
    at new DataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-datasource-juggler/lib/datasource.js:109:8)
    at Registry.createDataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/registry.js:349:12)
    at dataSourcesFromConfig (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/application.js:415:19)
    at EventEmitter.app.dataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/application.js:222:12)

我试着摆弄datasources.fig.json,所以它看起来和datasources.json一样,但这似乎没有做任何事情。 (为了显示省略了细节,用[通用]代替。)

{
  "db": {
    "name": "db",
    "connector": "memory"
  },
  "mongoDB": {
    "host": "[appname].mybluemix.net",
    "port": 27017,
    "url": "[appname].mybluemix.net",
    "database": "strongloop",
    "password": "[password]",
    "name": "mongoDB",
    "connector": "mongodb",
    "user": "[username]"
  }
}

最糟糕的是,现在我甚至无法在我的本地运行它!如果我像往常一样尝试slc运行,我会得到同样的错误。这是控制台输出:

/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/url_parser.js:20
    throw new Error('invalid schema, expected mongodb'); 
    ^

Error: invalid schema, expected mongodb
    at module.exports (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/url_parser.js:20:11)
    at connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/mongo_client.js:125:16)
    at Function.MongoClient.connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/mongo_client.js:109:3)
    at MongoDB.connect (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/lib/mongodb.js:113:25)
    at Object.initializeDataSource [as initialize] (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-connector-mongodb/lib/mongodb.js:70:26)
    at DataSource.setup (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-datasource-juggler/lib/datasource.js:332:17)
    at new DataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback-datasource-juggler/lib/datasource.js:109:8)
    at Registry.createDataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/registry.js:349:12)
    at dataSourcesFromConfig (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/application.js:415:19)
    at EventEmitter.app.dataSource (/Users/kusuriuri/Webworks/charapi/node_modules/loopback/lib/application.js:222:12)

没有任何地方告诉我如何解决这个问题,甚至是什么导致它,我不知道为什么我甚至不能在我的本地运行该应用程序。出了什么问题,我怎么让这个东西起作用?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

首先,您需要创建一个可通过Web访问的Mongo数据库。您可以通过Compose尝试MongoDB。您还可以在本地计算机上显示MongoDB实例。

MongoDB连接的主机/端口/ URL和其他凭据与您的Bluemix应用程序URL不同。相反,这些凭证应该指向现有的MongoDB实例。

将MongoDB实例的凭据输入datasources.json文件。无论您的LoopBack应用程序是在本地运行还是在Bluemix上运行,它都应该能够连接到您的MongoDB服务。

另外,尝试使用Arc(slc arc)来创建数据库连接;您可以使用Test Connection按钮轻松测试LoopBack应用程序是否能够访问数据库。