#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] })