从本地Apostrophe CMS代码连接到Mongo Atlas

时间:2018-08-24 12:51:42

标签: javascript mongodb apostrophe-cms

我已从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)

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

我能够用Atlas来重现此内容。您正在尝试使用mongodb + srv URL,这是Atlas在使用MongoDB驱动程序3.6或更高版本时建议的URL。 Apostrophe 2.x当前位于MongoDB 2.x驱动程序上,因此不起作用。

如果您单击“我正在使用驱动程序3.4或更早版本”选项卡,则需要使用在Atlas上可以看到的URL的较旧样式:

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中,我们当然会使用现成的新一代驱动程序。

(最后一个FYI-MongoDB驱动程序版本和MongoDB服务器版本不是同一回事。例如,不需要3.6驱动程序即可连接到3.6。)