是否可以使用 GraphQLList 从多个表中获取数据

2024-01-19

在 GraphQL 中,我们可以在 GraphQLList 中写入对象类型并获取所有字段。我正在使用关联,它正在连接两个表,但我无法获取两个表的字段。它只接受我在 GraphQLList 中编写的字段。因为我想要数据列表。

这是代码

films table:

    module.exports =(sequelize, DataTypes) => {
  const films = sequelize.define(
    'films',
    {
      id:{
        type: DataTypes.INTEGER,
        primaryKey: true,
        allowNull: false,

      },
      name: {
        type: DataTypes.STRING,

      },
      },

  );

  films.associate = (models) => {


    films.hasMany(models.movie_stream, {
      foreignKey: 'movie_id',
    });

};

  return films;

}

movie_stream table:

    module.exports = (sequelize, DataTypes) => {
  const movie_streams = sequelize.define('movie_streams', {
    id:{
      type: DataTypes.INTEGER,
      primaryKey: true,
      allowNull: false,
    },
      movie_id: {
          type: DataTypes.STRING,
          foreignKey: "movie_id",

        },
     });

  movie_streams.associate = (models) => {

    movie_streams.hasMany(models.films, {
      foreignKey: 'id',
    });
  };

  return movie_streams;
};

Schema file:

movieList:{
      type: new GraphQLList(Films),
 resolve: (parent,args)=>{
return newdb.films.findAll({attributes:['id','name','permalink'],
where: {content_category_value:parent.id },
include: [{
    model:newdb.movie_stream,
    attributes:['id','movie_id'],
}],
}).then(data=>{
    return data;
})
}

我可以在这里写类型:new GraphQLList(Films, Movie Stream)吗?

我已经尝试过,但它不起作用。请给我一些想法如何获取两个表的字段???


在 GraphQL 中实现此目的有两种主要方法:联合和接口。

接口是 GraphQL 架构中两个或多个对象类型共享某些字段(特征)的地方。例如,您可能有一个Product商店中所有商品的界面,每个产品都有一个price, barcode, and shelfLocation。您的所有产品,例如Shampoo, Bread, LawnChair然后将实现这个接口。

interface Product {
  price: Float
  barcode: Int
  shelfLocation: ShelfLocation
}

type Bread implements Product {
  price: Float
  barcode: Int
  shelfLocation: ShelfLocation
  brand: String
  numberOfSlices: Int
  calories: Float
  bestBefore: Date
}

extend type Query {
  searchProducts(phrase: String!): [Product!]
}

联合是您声明某物可以返回多个对象类型的地方,但这些类型不必具有任何共同的属性。

type Shark {
  name: String
  numberOfTeeth: Int
}

type Shoe {
  brand: String
  size: String
}

union SharkOrShoe = Shark | Shoe

extend type Query {
  searchSharksAndShoes(phrase: String!): [SharkOrShoe!]
}

在这两种情况下,您都可以使用片段或内联片段查询类型特定字段:

query {
  searchProducts(phrase: "tasty") {
    # shared fields
    __typename
    price
    barcode
    shelfLocation { aisle, position }

    # type specific fields
    ... on Bread { brand }
    ...breadFrag
  }
  searchSharksAndShoes(phrase: "sleek") {
    # only the introspection fields are shared in a union
    __typename

    # type specific fields
    ... on Shark { name, numberOfTeeth }
    ...shoeFrag
  }
}

fragment breadFrag on Bread {
  barcode
  bestBefore
}

fragment shoeFrag on Shoe {
  brand
  size
}

您可以在以下位置了解更多相关信息GraphQL 架构文档 https://graphql.org/learn/schema/并阅读有关GraphQL接口类型 https://graphql.org/graphql-js/type/#graphqlinterfacetype and GraphQLUnion类型 https://graphql.org/graphql-js/type/#graphqluniontype在 GraphQL.js 文档中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 GraphQLList 从多个表中获取数据 的相关文章

随机推荐

  • 使用 MongoDB 生成的 _ids 作为“秘密数据”(例如,OAuth 令牌)

    是 MongoDB id字段足够随机 不可猜测来充当秘密数据 例如 如果我正在构建服务器端 OAuth 我可以使用 id 作为用户的 OAuth 令牌吗 我想这样做是因为它为数据库提供了清洁性和可索引性 例如 tokens id gt oa
  • IntentService 中未调用 OnHandleIntent()

    我知道这个问题以前曾被问过 但我已经浏览了所有我能找到的答案 但仍然无法解决问题 问题是当 BroadcastReceiver 启动时 不会调用 IntentService onHandleIntent 奇怪的是 构造函数确实运行了 正如我
  • 将计算出的键添加到集合中

    请考虑这个由男人和女人组成的数据集 我根据几个变量在第二个时刻进行过滤 type ls JsonProvider lt gt let dt ls GetSamples let dt2 dt gt Seq filter fun c gt c
  • 处理 django 查询中的外来字符

    我正在构建从 GeoNames com 导入的城市名称搜索 有些城市的名称中带有国际字符 例如 伊斯坦布尔 实际上是数据库中的 伊斯坦布尔 当人们搜索 伊斯坦布尔 时 伊斯坦布尔不会出现 有没有一种方法可以在搜索中添加过滤器或解码器来知道
  • javascript从对象数组中获取键名称

    from data ja 大阪市 en Osaka 我想要得到 ja and en 我尝试了几种方法 data map function i return i 它返回 数字数组 console log Object keys Object
  • Espresso - 如何将 typeText 切换为英语或其他语言输入模式

    我正在使用 Espresso 来实现我的应用程序的自动测试框架 但在我设计的一些测试用例中 我发现我的测试总是失败 根本原因并不在于我对功能实现代码的测试代码 根本原因是在android输入法模式下 有时候 在中文输入模式下 我输入的文字是
  • jQuery .load 回调函数中 textStatus 参数的所有可能值是什么?

    我正在利用 jQuery 的回调函数 load http api jquery com load 方法来运行某些代码 如果textStatus的参数 loadmethod 等于某个字符串 例如我有 jQuery myContainer lo
  • VSCode 中具有语义突出显示的语言服务器

    我想写一个语言服务器VSCode具有语义突出显示支持 我使用的语言有非常复杂的规则 所以我不想依赖标记器来区分标识符和关键字 我已经在以下地区提供语言服务VS Community 我在那里编写了自己的分类器 可以编写自己的分类器VSCode
  • 在 OCR(光学字符识别)之前,您推荐使用什么软件进行图像增强? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们目前正在研究在提交 OCR 之前提高图像质量的方法 我们当前使用的 OCR 引擎是 Nuance v15 的 Scansoft API
  • 使用 python 的多处理池和映射函数测量进度

    我用于并行 csv 处理的以下代码 usr bin env python import csv from time import sleep from multiprocessing import Pool from multiproces
  • 使用预定义的过滤器过滤 android ListView

    我想为 ListView 实现预定义的过滤器 我的 ListView 将包含数字 并且会有一个过滤器图标 单击该图标应显示 显示奇数 显示偶数 和 显示全部 等选项 如何在单击 过滤器 图标时显示弹出对话框 如果这是使用简单的弹出对话框实现
  • 使用 EmacsClient 创建带有文本的新缓冲区

    我有一个程序可以将文本发送到任何其他程序以进行进一步分析 例如 sed grep 等 我希望它将数据发送到 Emacs 并在那里进行分析 我该怎么做呢 EmacsClient 默认采用文件名 这是一个数据字符串而不是文件 我真的不想创建和删
  • PowerShell 远程处理序列化和反序列化

    用于从 PowerShell 序列化和反序列化对象 由 PowerShell Remoting 执行 的例程是否可用 我想避免将对象写入磁盘 使用 Export CliXML 并使用 Import CliXML 读回 基本上 我想获取反序列
  • Android WorkManager 不会触发两个计划工作线程之一

    我的应用程序中安排了两个定期工作人员 其中一名工作人员在 24 小时后重复 另一名工作人员在 15 分钟后重复 最初 在全新安装时 一切按预期工作 但几天后 我在 2 台设备 共 5 台 上遇到了问题 24 小时工作人员被正确触发 但 15
  • 在 Hyperledger Fabric Chaincode 中使用 cron 作业

    我正在尝试在我的链代码中设置一个 cron 作业以 24 小时间隔运行 我正在尝试使用以下库来设置调度程序 https github com jasonlvhit gocron https github com jasonlvhit goc
  • 条件键控连接/更新并更新匹配的标志列

    这与question https stackoverflow com questions 29658627 conditional binary join and update by reference using the data tab
  • CMake 无法确定目标的链接器语言 - C++

    我正在尝试开发一个供私人使用的引擎 我正在使用 CMake 因为我打算将来使其成为多平台 但是开始出现一个我以前从未遇到过的错误 我尝试将项目 IEngine 更改为项目 IEngine CXX 如堆栈溢出的其他问题中所述 但错误仍然存 在
  • 执行 bash 文件时出现问题

    你好呀 我在学习结合 sh 文件和 PHP 时遇到了一些问题 我创建了一个文件 test sh 并在该文件中调用了一个名为 test php 的 PHP 文件 如果我双击 sh 文件 那么它会完美运行 但是当我尝试从终端运行它时 我会收到
  • 如何在进度条标签内添加标签?

    我想在进度条标签中添加一个标签 就像这个漂亮的例子一样 假设蓝色是值 红色是最大值 我怎样才能在里面添加一个标签 比如我的 35 使用CSSposition relative将文本移动到栏上 对于短杆 一个快速而肮脏的解决方案是 posit
  • 是否可以使用 GraphQLList 从多个表中获取数据

    在 GraphQL 中 我们可以在 GraphQLList 中写入对象类型并获取所有字段 我正在使用关联 它正在连接两个表 但我无法获取两个表的字段 它只接受我在 GraphQLList 中编写的字段 因为我想要数据列表 这是代码 film