首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >盖茨比支持MongoDB关系吗?

盖茨比支持MongoDB关系吗?
EN

Stack Overflow用户
提问于 2020-05-27 04:49:48
回答 1查看 640关注 0票数 1

我正在建立一个个人博客,并选择盖茨比,因为明显的原因(表现和容易开始),因为我有一些反应的正面背景。此外,我还构建了一个简单的应用程序来创建我的内容(html字符串),并使用快捷服务器存储在MongoDB数据库中。现在对于博客来说,我只是尝试使用MongoDB插件从gatsby-source-mongodb中提取数据。

我的MongoDB模式有关系。例如,一个'Post‘模式有一个' user’属性,它是一个从'User‘模式中引用用户的ObjectID。我的gatsby-source-mongodb配置如下:

代码语言:javascript
运行
复制
    {
      resolve: 'gatsby-source-mongodb',
      options: {
          dbName: 'KathaDB',
          collection: 'posts',
          server: {
              address: "somecluster",
              port: 27017
          },
          auth: {
              user: 'someuser',
              password: 'somepasswd'
          },
          extraParams: {
            replicaSet: 'test',
            ssl: true,
            authSource: 'admin',
            retryWrites: true,
            preserveObjectIds: true
        }

      }
  }

我有几个问题:

  1. 当我查询时,我从'Post‘模式中获得所有属性,但在响应中没有'user’属性。我不知道这是不是因为财产的类型。我挖了一下,发现了一个类似的问题,这里。他们似乎通过保存ObjectID来解决这个问题,但我甚至没有得到ObjectID类型的属性。
  2. 另外,这个插件支持关系吗?例如,当给出“用户”数据的ObjectID时,是否有可能获取它?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 06:18:55

确实如此。

MongoDB的关系依赖于ObjectID,因此您可能不得不将preserveObjectIds: true添加到插件选项中:

代码语言:javascript
运行
复制
{
  resolve: "gatsby-source-mongodb",
  options: {
    dbName: "KathaDB",
    collection: "posts",
    server: {
      address: "somecluster",
      port: 27017,
    },
    auth: {
      user: "someuser",
      password: "somepasswd",
    },
    extraParams: {
      replicaSet: "test",
      ssl: true,
      authSource: "admin",
      retryWrites: true,
      preserveObjectIds: true,
    },
    preserveObjectIds: true, // <= here
  },
};

我不确定gatsby-source-mongodb是否会凭空创建关系(如果我的内存是正确的,我不认为是这样的),但是使用ObjectIds,您可以使用GraphQL创建外键关系。

在盖茨比,有两种方法可以做到这一点:

  1. gatsby-config.js
  2. 通过Gatsby的模式定制实现指令 (来自2.2)

我推荐第二个选项,因为它是一种更GraphQL的方式,并且发生在大多数节点操作都发生在gatsby-node.js中。但是,如果您从盖茨比和GraphQL开始,第一个选项可能更容易设置。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62035677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档