Cloud Functions-TypeScript- "Возможно объект является undefined'.ts (2532)" - PullRequest
1 голос
/ 27 апреля 2019

Это мой код:

export const newPost = functions.firestore
.document('post/{postId}/')
.onCreate((snap, context) => {

    const postData = snap.data()
    const authorId = postData.uid    
});

Я получаю сообщение об ошибке, что postData, возможно, не определен, способ обойти это, чтобы проверить, если postData! = Null, а затем внутри {} использовать объект postData.

Это код из документации:

exports.createUser = functions.firestore
.document('users/{userId}')
.onCreate((snap, context) => {
  // Get an object representing the document
  // e.g. {'name': 'Marie', 'age': 66}
  const newValue = snap.data();

  // access a particular field as you would any JS property
  const name = newValue.name;

  // perform desired operations ...
});

Здесь не упоминается, что может быть неопределенный объект newValue, также, читая много примеров облачных функций с firestore, я не видел, чтобы люди проверяли, если .data ()! = Null, прежде чем использовать его

1 Ответ

1 голос
/ 28 апреля 2019

В вашей конфигурации TypeScript почти наверняка включена строгая проверка типов, которая выдаст вам это предупреждение, когда вы попытаетесь получить доступ к свойствам чего-либо, которые могут быть нулевыми или неопределенными. Проверьте ваш tsconfig.json и найдите "strict": true" в опциях компилятора. Привязки TypeScript для API DataSnapshot.data () говорят, что возвращаемое значение data () может быть чем угодно (в том числе нулевым или неопределенным), и TypeScript заставляет вас корректно работать с этим фактом во время компиляции, поэтому что ваш код не падает во время выполнения.

Пример кода, который вы просматриваете, представляет собой простой JavaScript, который не имеет никакой проверки типов. Предполагается, что снимок не будет нулевым или неопределенным. Если вы обнаружили, что это сбивает с толку или вызывает проблемы, воспользуйтесь ссылкой «отправить отзыв» в верхней части страницы документации, чтобы объяснить, что вас смущает.

...