Как я могу получить доступ к содержимому моего запроса Get с помощью лямбда-функции

Мне нужно, чтобы экземпляр объекта хранился в моей БД фауны, но я не могу получить его содержимое на своем фронте.

Я пытался определить проблему с журналами консоли, но...

Вот моя лямбда-функция

/* code from functions/todos-read.js */
import faunadb from 'faunadb'

const q = faunadb.query
const client = new faunadb.Client({
  secret: process.env.FAUNADB_SECRET
})

exports.handler = (event, context, callback) => {
  const id = '234316534878568967'
  console.info(`Function 'todo-read' invoked. Read id: ${id}`)
  return client.query(q.Get(q.Ref(q.Class("missions"), "234316534878568967")))
  .then((response) => {
    console.info("success", response)
    return callback(null, {
      statusCode: 200,
      body: JSON.stringify(response)
    })
  }).catch((error) => {
    console.info("error", error)
    return callback(null, {
      statusCode: 400,
      body: JSON.stringify(error)
    })
  })
}

моя функция в моей угловой службе:

  readById = () => {
    return fetch('/.netlify/functions/mission-read-by-id').then((response) => {
      console.info(response);
      return response.json();
    });
  }

затем я назначил эту функцию переменной в моем компоненте с помощью console.info

this.missionData = this.missionService.readById();
console.info(this.missionData);

результат ответа в консоли:

[BACK] [LAMBDA] Request from ::ffff:127.0.0.1: GET /mission-read-by-id
[BACK] [LAMBDA] Function 'todo-read' invoked. Read id: 234316534878568967
[BACK] [LAMBDA] success { ref: Ref(Class("missions"), "234316534878568967"),
[BACK] [LAMBDA]   ts: 1559720511260000,
[BACK] [LAMBDA]   data:
[BACK] [LAMBDA]    { consultant: 'sd',
[BACK] [LAMBDA]      consultantEmail: '[email protected]' } }
[BACK] [LAMBDA] Response with status 200 in 256 ms.

результат console.info в компоненте:

{…}
​
__zone_symbol__state: true
​
__zone_symbol__value: {…}

​​data: {…}
​​​
client: "dvs"
​​​
clientEmail: "[email protected]"

<prototype>: Object { … }
​​
ref: Object { "@ref": {…} }
​​
ts: 1559720511260000
​​
<prototype>: Object { … }
​
<prototype>: Object { then: then(), catch: catch(), finally: finally(), … }

Я не понимаю, как получить свой объект, тогда, если вы можете мне объяснить... Большое спасибо

В console.info возвращаются поля данных консультанта и консультанта по электронной почте, верно? Так каких полей не хватает? И каково ожидаемое поведение?

Bruno Quaresma 05.06.2019 16:35
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
1
155
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

readById возвращает Promise, поэтому вам нужно изменить свой код, чтобы использовать это:

this.missionService.readById().then(missionData => console.info(missionData))
// or using async/await
this.missionData = await this.missionService.readById();
console.info(this.missionData);

просто как примечание для новых разработчиков js, await можно использовать только в функциях с включенным флагом async на них

dano 05.06.2019 16:57

Другой вопрос, почему это:

  async onSubmit() {

    this.missionData = await this.missionService.readById();
    console.info(this.missionData);
   }

зарегистрируйте данные моей миссии с помощью объекта, тогда хорошо. И это

  onSubmit() {

    this.missionService.readById().then((mission) => {
      this.missionData = mission;
    });
    console.info(this.missionData);
   }

журнал не определен?

console.info должен быть внутри then()

Bruno Quaresma 05.06.2019 21:20

Другие вопросы по теме