Передача массива в GraphQl - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю с приложением для фильтрации данных, в данном случае через запрос findAsset.

Мне нужно отправить массив фильтров, с помощью которого findAsset ответит отфильтрованными данными, однако,отправляемый массив не соответствует графу Query.

Я приложил и текущий, и правильный сценарии.

Это массив

constructor(private filterService: FilterService, private route: ActivatedRoute, private fb: FormBuilder, private houseService: HousesServices) {
    this.testForm = this.fb.group ({
      budget : this.fb.group({
        gte: '',
        lte: ''
      }),
      area : this.fb.group({
        gte: '',
        lte: ''
      })
    });

    this.testForm.valueChanges.subscribe( e => {
      this.filterCriteriaChanged.emit(this.filtersParam(e));
      console.log(e);
    });
  }

  private filtersParam (args): any {
    const FILTER_MAP = {
      area: 'basic.parcelFiscalArea',
      budget: 'pricing.price'
    }
    console.log();

    let resultO = [];
    let params = args;
    for (let key in params ) {
      const currentFilter = FILTER_MAP[key];

      for (let key2 in params[key]) {

        // console.log(params[key][key2]);
        if (params[key][key2]) {
          let res: any = {};
          res.name = currentFilter;
          res.op = `${key2}`;
          res.value = params[key][key2];
          resultO.push(res);
        }
      }
    }
    console.log(resultO);
    return JSON.stringify(resultO);
  }

В настоящее время:

{
  findAssets(
    bounds: [
      [2.383443042596838, 48.88251557008428]
      [2.310486957387212, 48.83525071179383]
    ]
    filter: [
      { "name": "basic.parcelFiscalArea", "op": "gte", "value": 100 }
      { "name": "basic.parcelFiscalArea", "op": "lte", "value": 1000 }
    ]
  ) {
    list {
      address {
        number
        street
        zipCode
      }
      memberOf {
        city
      }
      info {
        name
        value
      }
      media {
        type
        caption
        path
      }
    }
  }
}

Правильный запрос

{
  findAssets(
    bounds: [
      [2.383443042596838, 48.88251557008428]
      [2.310486957387212, 48.83525071179383]
    ]
    filter: [
      { name: "basic.parcelFiscalArea", op: "gte", value: 100 }
      { name: "basic.parcelFiscalArea", op: "lte", value: 1000 }
    ]
  ) {
    list {
      address {
        number
        street
        zipCode
      }
      memberOf {
        city
      }
      info {
        name
        value
      }
      media {
        type
        caption
        path
      }
    }
  }
}

Как правильно отправить массив?

Я столкнулся с JSONtoGraphQlQuery , но не смог получить желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...