尝试使用 `gatsby-source-mongodb` 从 MongoDB 获取数据到 Gatsby

Posted

技术标签:

【中文标题】尝试使用 `gatsby-source-mongodb` 从 MongoDB 获取数据到 Gatsby【英文标题】:Stuck trying to fetch data from MongoDB into Gatsby using `gatsby-source-mongodb` 【发布时间】:2019-06-03 00:54:56 【问题描述】:

因此似乎几乎没有关于如何执行此操作的详细文档。基本上我必须指导我的是this。我已经跟进了映射媒体类型功能,此时我已经陷入困境。它举了一个例子:从集合中获取数据以使用降价。但这不是我想要达到的目标。

基本上我想要做的是从 Mongo 导入几个集合,我打算将它们拉入我的 Gatsby 应用程序 - 可能使用 GraphQL。

到目前为止,这就是我对 gatsby-config.js 所做的事情:

    
      resolve: `gatsby-source-mongodb`,
      options: 
        dbName: `REDACTED`,
        collection: `articles`,
        map:  articles:  /* WHAT DO I DO HERE? */  
      ,
      server:  address: `REDACTED`, port: 43532 ,
      auth:  user: `REDACTED`, password: `REDACTED` ,
      extraParams:  replicaSet: `test-shard-0`, ssl: true, authSource: `admin` 
    

在此之后,我需要找到一种查询导入集合的方法,我不知道该怎么做。

非常感谢您提供的任何帮助!

【问题讨论】:

【参考方案1】:

首先,我的问题中的一个主要错误是我将serverauthextraParams 放在options 对象之外。

以下配置使我能够让 Atlas 正常工作:


    resolve: `gatsby-source-mongodb`,
    options: 
        dbName: `your-database-name`,
        collection: [`yourCollection1`, `yourCollection2`],
        server:  address: 'cluster0-shard-00-01-XXXX.mongodb.net', port: 27017,
        auth:  user: 'yourUserName', password: 'yourPassword' ,
        extraParams:  replicaSet: 'Cluster0-shard-0', ssl: true, authSource: `admin`, retryWrites: true 
          

注意:replicaSet 参数必须与您的地址的开头匹配(如示例所示)。您还可以通过单击 cloud.mongodb.com 上集群主信息面板上的 CONNECT 按钮找到您的集群 URL。 (下图)

【讨论】:

【参考方案2】:

文档看起来很清楚。

基本上我想做的是从 Mongo 导入几个集合,

// In your gatsby-config.js
module.exports = 
  plugins: [
    
      resolve: `gatsby-source-mongodb`,
      options:  dbName: `local`, collection: [`documents`, `vehicles`] ,
    ,
  ],

在此之后,我需要找到一种查询导入集合的方法

query 
  allMongodbLocalDocuments 
    edges 
      node 
        id
        url
        name
      
    
  

注意:根据您的dbName,查询allMongodbLocalDocuments 可能会因您的情况而有所不同。但是您应该能够在 GraphiQL (http://localhost:8000/___graphql) 中找到可用的查询

现在您应该可以在 GraphiQL 中测试上述查询了。

然后,看看 gatsby using mongodb example 项目。在gatsby-node.js 中,他们使用上述查询从./src/templates/item.js 的模板中为查询中的每个节点创建一个页面

【讨论】:

你能在 GraphiQL 中测试查询吗? 感谢您的回复 :) 我不得不找一个朋友来帮助我。基本上我在配置文件中错误地设置了插件。如您所见,我将 server、auth、extraParams 放在选项之外。我现在已经可以使用 GraphiQL 了。我的朋友将很快发布详细的答案,以准确解释需要在配置文件中添加什么才能连接到 MongoDB Atlas。 @JossClassey 你能展示你的解决方案吗,因为我还没有得到它的工作。

以上是关于尝试使用 `gatsby-source-mongodb` 从 MongoDB 获取数据到 Gatsby的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用堆叠小部件构建布局

尝试使用 Curl 登录网站

不安全的 JavaScript 尝试使用框架访问

当我尝试使用 ansible ping 我的 VM 时,它会尝试 ping 服务器 ID 而不是 IP

尝试使用 ConfigurationBuilder 但得到 FileLoadException

尝试使用 Jquery 更改 HTML [重复]