mongodb 的架构无效
Invalid schema for mongodb
我使用环回设置了一个 API,在我的本地点击了一个 mongodb。一切都很好,一切都很好 运行ning。然后我尝试将它移动到 bluemix。当我到达 slc arc 并使用 composer 的步骤时,每次我尝试检查数据库连接时,都会收到一条错误消息 "invalid schema, expected mongodb"。
这是来自 strongloop composer 的完整错误:
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 一样,但这似乎没有任何作用。 (为了展示省略了细节,用[generic]代替。)
{
"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)
没有任何地方告诉我如何解决这个问题,甚至是什么导致了这个问题,我不知道为什么我什至不能再 运行 我本地的应用程序了。出了什么问题,我如何让这个东西工作?
非常感谢!
首先,您需要创建一个 Mongo 可通过网络访问的数据库。您可以通过 Compose 尝试 MongoDB。您还可以在本地计算机上显示 MongoDB 实例。
您的 MongoDB 连接的 host/port/url 和其他凭据与您的 Bluemix 应用程序 URL 不同。相反,这些凭据应指向现有的 Mongo 数据库实例。
将您的 Mongo 数据库实例的凭据输入到您的 datasources.json
文件中。无论您的 LoopBack 应用程序是 运行 在本地还是在 Bluemix 上,它都应该能够连接到您的 MongoDB 服务。
此外,尝试使用 Arc (slc arc
) 创建数据库连接;您可以轻松地测试您的 LoopBack 应用程序是否能够使用 Test Connection
按钮访问数据库。
我使用环回设置了一个 API,在我的本地点击了一个 mongodb。一切都很好,一切都很好 运行ning。然后我尝试将它移动到 bluemix。当我到达 slc arc 并使用 composer 的步骤时,每次我尝试检查数据库连接时,都会收到一条错误消息 "invalid schema, expected mongodb"。
这是来自 strongloop composer 的完整错误:
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 一样,但这似乎没有任何作用。 (为了展示省略了细节,用[generic]代替。)
{
"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)
没有任何地方告诉我如何解决这个问题,甚至是什么导致了这个问题,我不知道为什么我什至不能再 运行 我本地的应用程序了。出了什么问题,我如何让这个东西工作?
非常感谢!
首先,您需要创建一个 Mongo 可通过网络访问的数据库。您可以通过 Compose 尝试 MongoDB。您还可以在本地计算机上显示 MongoDB 实例。
您的 MongoDB 连接的 host/port/url 和其他凭据与您的 Bluemix 应用程序 URL 不同。相反,这些凭据应指向现有的 Mongo 数据库实例。
将您的 Mongo 数据库实例的凭据输入到您的 datasources.json
文件中。无论您的 LoopBack 应用程序是 运行 在本地还是在 Bluemix 上,它都应该能够连接到您的 MongoDB 服务。
此外,尝试使用 Arc (slc arc
) 创建数据库连接;您可以轻松地测试您的 LoopBack 应用程序是否能够使用 Test Connection
按钮访问数据库。