javascript - 从本地 Apostrope cms 代码连接到 Mongo Atlas

标签 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)

我在这里缺少什么?

最佳答案

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

如果您单击“我正在使用驱动程序 3.4 或更早版本”选项卡,则需要使用旧版 URL,您可以在 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 的成功并不强制要求这样做。

在 Apostrope 3.x 中,我们当然会使用开箱即用的新一代驱动程序。

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

关于javascript - 从本地 Apostrope cms 代码连接到 Mongo Atlas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004923/

相关文章:

apostrophe-cms - Apostrope CMS 中的自定义图片库

javascript - 如何将数组从background.js传递到inject.js(内容)脚本(Chrome扩展)

java - Spring Data MongoDB 无法在组聚合中映射 _id

javascript - 动态按钮 ID - Javascript

node.js - 按日期排序,null 在前

mongodb - Mongo Aggregation 删除一个 id 的所有记录,只保留最旧的记录

apostrophe-cms - 撇号小部件助手

node.js - 在 Apostrope cms 中使用第 3 方 jquery 插件

javascript - WordPress 中的产品数量更新错误

javascript - 单击取消按钮时无法停止执行