Как преобразовать запрошенные данные в массив FaunaDB typescript?

#javascript #typescript #facebook-fql #faunadb

#javascript #машинописный текст #facebook-fql #faunadb

Вопрос:

Я мог бы отобразить результат моего запроса разбивки на страницы (FaunaDB, FQL) в консоли, и он появится как объект javascript. Тем не менее, я не могу получить доступ к свойствам указанного объекта и еще меньше я могу преобразовать его в массив с помощью оператора распространения. Как я мог это сделать?

Я знаю, что существует помощник по разбивке на страницы, но не смог заставить его работать, как было объяснено выше. Вот последний код, который я пытаюсь использовать:

 var array=[]
qu(q.Map(
    q.Paginate(q.Match(q.Index('FeesByIndex'))),
    q.Lambda(x => q.Get(x))
   )).then(res => { console.log(res); array=[...res] })//the log really looks like a js object and res is said to be one
  
  

В нем говорится, что тип object не является типом массива. Кроме того, считается, что данные о свойствах не существуют в res, хотя они явно существуют в консоли

Ответ №1:

Вы пропустили указание индексного термина, и лямбда-выражение содержит синтаксические ошибки.

Объект ответа имеет свойство данных, которое представляет собой список.

В моих репозиториях я использую этот фрагмент кода, если запрос возвращает несколько объектов:

     const result: Fee[] = [];

    await CLIENT.query(
      q.Map(
        q.Paginate(
          q.Match(
            q.Index('FeesByIndex'),
            'index term',
          ),
        ),
        q.Lambda('fees', q.Get(q.Var('fees'))),
      )
    )
    .then(faunaResponse => {
      const dataArray = faunaResponse.data;
      dataArray.forEach(s => {
        const data = s.data;
        result.push({
          id: data.id,
          yourProp1: data.yourProp1,
          yourProp2: data.yourProp2,
        });
      });
    })
    .catch(e => logger.error(e));
  

Ответ №2:

вы бы попробовали этот способ?

 var array=[]
  qu(q.Select(['data'],
      q.Map(
          q.Paginate(q.Match(q.Index('FeesByIndex'))),
          q.Lambda(x => q.Get(x))
      )
    )
  ).then(res => { console.log(res); array=[...res] })