Похоже, что в SDK или платформе Firebase Functions (15 декабря 2018 г.) есть ошибка.
Обходной путь:
Обновление Правильный способ доступа к идентификатору родительского документа - через change.after.ref.parent.parent.id
или snapshot.ref.parent.parent.id
.Обратите внимание на .parent.parent
.
Если вы ожидаете параметры с идентификаторами документов, вы, вероятно, можете обойти эту проблему, используя данные, предоставленные в первом аргументе вашей функции.
Вот пример с триггерной функцией onCreate
:
export const myCreateTriggeredFn = firestore
.document("user/{userId}/friends/{friendId}")
.onCreate((snapshot, context) => {
let { userId, friendId } = context.params;
if (typeof userId !== "string" || typeof friendId !== "string") {
console.warn(`Invalid params, expected 'userId' and 'friendId'`, context.params);
userId = snapshot.ref.parent.parent.id;
friendId = snapshot.id;
}
// Continue your logic here...
});
И для триггерной функции onWrite
:
export const myChangeTriggeredFn = firestore
.document("user/{userId}/friends/{friendId}")
.onWrite((change, context) => {
let { userId, friendId } = context.params;
if (typeof userId !== "string" || typeof friendId !== "string") {
console.warn(`Invalid params, expected 'userId' and 'friendId'`, context.params);
userId = change.after.ref.parent.parent.id;
friendId = change.after.id;
}
// Continue your logic here...
});
Для полноты ивыделите ошибку, оба примера показывают, как вы обычно извлекаете идентификаторы из context.params
, а затем добавляете обходной путь для извлечения идентификаторов из объектов моментального снимка / изменения.