首页 > 解决方案 > 如果参数为空,GraphQL 查询默认返回全部

问题描述

我有一个简单的问题,我目前正在使用 GraphQL/Hasura 订阅一些数据,此订阅将 id 作为参数,但在 id 为空的情况下,我的订阅默认返回所有数据...

这是订阅:

subscription MySubscription($id: Int) {
  dcim_device(where: { virtual_chassis_id: { _eq: $id } }) {
    id
    name
    serial
    site_id
    status
    ip_address {
      address
    }
    dcim_platform {
      name
    }
    device_tags {
      tag_id
      extras_tag {
        id
        name
        color
      }
    }
    dcim_devicerole {
      color
      name
    }
    virtual_chassis_id
    dcim_virtualchassis {
      id
    }
    dcim_interfaces {
      enabled
      name
      id
      type
    }
  }
}

这是 Vue.js 前端部分,我在其中使用 Apollo 调用我的订阅:

apollo: {
    $subscribe: {
      dcim_device: {
        query: require("../../graphql/subscribeToNewDevicesByVCid.gql"),
        variables() {
          return {
            id: this.node.dcim_virtualchassis.id,
          };
        },
        result({ data }) {
          this.devices = data.dcim_device;
          console.log(this.devices);
        },
      },
    },
  },

如您所见,“节点”可以根据用户点击而改变,在我的情况下,有些节点的 virtual_chassis_id 为空......

我想知道是否有可能捕获或类似的情况,即没有为查询提供参数以显示其他内容。

提前致谢 !

标签: graphqlapollo

解决方案


推荐阅读