2016-04-27 5 views
0

Возможно ли включать параметры при создании запроса на ретрансляцию?Фрагмент ретрансляции Дополнительные аргументы

См. Ниже Я запрашиваю ресурсы, и я жестко кодирую параметры здесь.

Я хотел бы условно включить некоторые из этих аргументов, например date_gt и date_lt. На данный момент я должен установить для них начальные значения, но это разваливается, поскольку мне нужно всегда запрашивать записи без дат.

Если я не могу сделать это, то можно отправить null в качестве значения для параметра здесь, потому что мне не очень повезло с этим ни на данный момент.

fragments: { 
    viewer:() => Relay.QL` 
     fragment on Viewer { 
      resources( 
        first: $pageSize 
        q: $q 
        type: $types 
        license: $licenses 
        order: $order 
        access_rights: "published" 
        orphan: true 
        date_gt: $dateFrom 
        date_lt: $dateTo 
      ) 
      { 
       total 
       edges { 
        node { 
         ${ArticleResult.getFragment('resource')} 
        } 
       } 
       pageInfo { 
        hasNextPage 
       } 
      } 
     } 
    ` 
}, 

ответ

1

Да, мы можем обеспечить null в качестве значения для необязательного аргумента в реле (на стороне клиента).

Однако мы также можем предоставить значения по умолчанию для этих необязательных аргументов. Например, в схеме GraphQL, поле resources может быть как:

resources: { 
    type: ResourceConnection, 

    args: { 
    // other args go here 
    date_gt: { 
     type: GraphQLString, 
     defaultValue: '1970-01-01' 
    }, 
    date_lt: { 
     type: GraphQLString, 
     defaultValue: '2030-12-31' 
    }, 
    ...connectionArgs 
    }, 

    resolve: async (root, {...otherArgs, date_gt, date_lt, ...args}) => { 

    // Check date_gt and/or date_lt values. If they equal the default 
    // invalid values, ignore them while calculating output. Sometimes it 
    // is possible that the default values are good enough to be equivalent 
    // of user-provided values. 

    return output; 
    }, 
}, 

Если мы не обеспечиваем значения по умолчанию для необязательного аргумента, мы можем установить значение дополнительного аргумента null. В этом случае undefined значения принимается на стороне сервера:

resources: { 
    type: ResourceConnection, 

    args: { 
    // other args go here 
    date_gt: { 
     type: GraphQLString, 
    }, 
    date_lt: { 
     type: GraphQLString, 
    }, 
    ...connectionArgs 
    }, 

    resolve: async (root, {...otherArgs, date_gt, date_lt, ...args}) => { 
    console.log(`date_gt: ${date_gt}, date_lt: ${date_lt}`); 

    // Check date_gt and/or date_lt values. If they are not provided, 
    // date_gt and date_lt are `undefined`. Calculate output accordingly. 

    return output; 
    }, 
}, 
+0

Спасибо, да так, просто установив параметры на ноль, кажется, вызывают реле не миновать, что пары до сервера GraphQL, что это именно то, что я хотел , – Tim

Смежные вопросы