从本地 Apostrophe cms 代码连接到 Mongo Atlas
Connecting to Mongo Atlas from local Apostrophe cms code
我在 Mongo Atlas 上启用了从任何 0.0.0.0/0 的连接。
在撇号代码中,在文件 data/local.js
我添加了以下代码:
module.exports = {
modules: {
'apostrophe-db': {
uri: 'mongodb+srv://clustername.mongodb.net/dbname?retryWrites=true'
}
}
};
尝试过
mongodb+srv://admin:@clustername.mongodb.net/dbname?retryWrites=true
以及。
我看到以下日志:
/home/radhika/code/demo/demo-io/node_modules/apostrophe/index.js:67
throw err;
^
MongoError: not authorized on admin to execute command { listIndexes: "aposCache", cursor: { } }
at Function.MongoError.create (/home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/cursor.js:212:36)
at /home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/connection/pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
我在这里错过了什么?
我能够用 Atlas 重现这个。您正在尝试使用 mongodb+srv URL,这是 Atlas 在使用 MongoDB 驱动程序 3.6 或更高版本时推荐的。撇号 2.x 当前在 MongoDB 2.x 驱动程序上,因此它不起作用。
您需要使用 URL 的旧样式,如果您改为单击 "I am using driver 3.4 or earlier" 选项卡,您可以在 Atlas 上看到它:
mongodb://user:password@test-shard-00-00-some-address.mongodb.net:27017,test-shard-00-01-some-address.mongodb.net:27017/test?ssl=true&replicaSet=your-replica-set-name&authSource=admin&retryWrites=true
当我这样做时,连接没有问题。
如果你渴望使用更新版本的MongoDB驱动程序,以及新样式的URI,你可以使用apostrophe-db-mongo-3-driver模块。但是,目前这并不是使用 Atlas 取得成功所必需的。
在 Apostrophe 3.x 中,我们当然会使用开箱即用的新一代驱动程序。
(仅供参考 - MongoDB 驱动程序版本和 MongoDB 服务器版本不是一回事。例如,您不需要 3.6 驱动程序连接到 3.6。)
如果您单击群集中的 Connect
按钮并选择 Connect your application
,然后选择驱动程序版本 2。这将为您提供如何连接的示例。
我在 Mongo Atlas 上启用了从任何 0.0.0.0/0 的连接。 在撇号代码中,在文件 data/local.js 我添加了以下代码:
module.exports = {
modules: {
'apostrophe-db': {
uri: 'mongodb+srv://clustername.mongodb.net/dbname?retryWrites=true'
}
}
};
我看到以下日志:
/home/radhika/code/demo/demo-io/node_modules/apostrophe/index.js:67
throw err;
^
MongoError: not authorized on admin to execute command { listIndexes: "aposCache", cursor: { } }
at Function.MongoError.create (/home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/cursor.js:212:36)
at /home/radhika/code/demo/demo-io/node_modules/mongodb-core/lib/connection/pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
我在这里错过了什么?
我能够用 Atlas 重现这个。您正在尝试使用 mongodb+srv URL,这是 Atlas 在使用 MongoDB 驱动程序 3.6 或更高版本时推荐的。撇号 2.x 当前在 MongoDB 2.x 驱动程序上,因此它不起作用。
您需要使用 URL 的旧样式,如果您改为单击 "I am using driver 3.4 or earlier" 选项卡,您可以在 Atlas 上看到它:
mongodb://user:password@test-shard-00-00-some-address.mongodb.net:27017,test-shard-00-01-some-address.mongodb.net:27017/test?ssl=true&replicaSet=your-replica-set-name&authSource=admin&retryWrites=true
当我这样做时,连接没有问题。
如果你渴望使用更新版本的MongoDB驱动程序,以及新样式的URI,你可以使用apostrophe-db-mongo-3-driver模块。但是,目前这并不是使用 Atlas 取得成功所必需的。
在 Apostrophe 3.x 中,我们当然会使用开箱即用的新一代驱动程序。
(仅供参考 - MongoDB 驱动程序版本和 MongoDB 服务器版本不是一回事。例如,您不需要 3.6 驱动程序连接到 3.6。)
如果您单击群集中的 Connect
按钮并选择 Connect your application
,然后选择驱动程序版本 2。这将为您提供如何连接的示例。