Как получить доступ к данным внутри документа в облачном хранилище? / Это читает заряд? - PullRequest
0 голосов
/ 28 августа 2018

Я хочу активировать облачную функцию, когда пользователь комментирует сообщение. Я хочу получить доступ к этому комментарию через облачную функцию.

Пример: пользовательский комментарий в сообщении X: «Я хочу есть рыбу».

Я хочу получить доступ через облачную функцию -> Идентификатор поста, Идентификатор комментария и данные внутри комментария («Я хочу есть рыбу»)

У меня есть следующая облачная функция:

exports.onCommentarie = functions.firestore .document('posts/{postId}/{commentaries}/{commentarieId}') .onCreate((context) => {
let postId = context.params.postId
let commentarieId = context.params.commentarieId
let data = context
console.log('O comentário do Id foi:', data)
console.log('o Id do post foi:', postId)
console.log('o Id do comentário foi:', commentarieId) })

если я использую .onCreate((change, context) => ошибка возврата консоли.

Могу ли я получить доступ к данным через контекст? Мой контекст возвращается:

Обозначение идентификатора: {data: QueryDocumentSnapshot {_ref: DocumentReference {_firestore: [Object], _validator: [Object], _referencePath: [Object]}, _fieldsProto: {comment: [Object], creatorId: [Object], creatorName: [Object], creatorPhoto: [Object], date: [Object]}, _serializer: Serializer { timestampsInSnapshotsEnabled: false, createReference: [Function]}, _validator: Validator {isFunction: [Function], isOptionalFunction: [Function], isInteger: [Function], isOptionalInteger: [Function], isNumber: [Функция], isOptionalNumber: [Функция], isObject: [Функция], isOptionalObject: [Функция], isString: [Функция], isOptionalString: [Функция], isBoolean: [Функция], isOptionalBoolean: [Функция], isArrayElement: [Функция], isOptionalArrayElement: [Функция], isDeletePrecondition: [Функция], isOptionalDeletePrecondition: [Функция], isDocument: [Функция], isOptionalDocument: [Функция], isDocumentReference: [Функция], isOptionalDocumentReference: [Функция], isFieldPath: [Функция], isOptionalFieldPath: [Функция], isFieldValue: [Функция], isOptionalFieldValue: [Функция], isFieldOrder: [Функция], isOptionalFieldOrder: [Функция], isQueryComparison: [Функция], isOptionalQueryComparison: [Функция], isQueryValue: [Функция], isOptionalQueryValue: [Функция], isResourcePath: [Функция], isOptionalResourcePath: [Функция], isSetOptions: [Функция], isOptionalSetOptions: [Функция], isUpdateMap: [Функция], isOptionalUpdateMap: [Функция], isUpdatePrecondition: [Функция], isOptionalUpdatePrecondition: [Function]}, _readTime: undefined, _createTime: отметка времени {_секунд: 1535341163, _nanoseconds: 46815000}, _updateTime: отметка времени {_секунд: 1535341163, _nanoseconds: 46815000}}, идентификатор события: '168433e5-0a62-42a5-a7b4-dbd58f629661-0', eventType: 'provider / cloud.firestore / eventTypes / document.create', notSupported: {}, params: {postId: 'U4lpN89JeM8cSVl2sv95', комментарии: 'comments', commentarieId: 'F85CRjInT1HPltEbbKJS'}, ресурс: 'Проекты / herot-глаз / базы данных / (по умолчанию) / документы / сообщения / U4lpN89JeM8cSVl2sv95 / комментарии / F85CRjInT1HPltEbbKJS', метка времени: '2018-08-27T03: 39: 23.046815Z'}

если (изменить, контекст) возвращает ошибку, как я могу получить доступ к данным внутри этого?!

Это чтение считается счетом в счетах ?! Я должен рассчитать это, так как это значительно увеличит стоимость сервера.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

@ RenaudTarnec ответы, кажется, хороший и способ для решения таких вопросов. Тем не менее, @ eeerrrttt решил проблему самостоятельно, используя context.data.data() вместо context для переменной data.

0 голосов
/ 28 августа 2018

Синтаксис для триггера onCreate() для Firestore следующий, как подробно здесь в документации.

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 ...
    });

В вашем коде передается только один параметр (.onCreate((context) => {})), поэтому необходимо :

  1. изменить его так, чтобы передать два параметра
  2. изменить let data = context на const data = snap.data() (или const data = change.data(), если вы используете .onCreate((change, context)).

Невозможно получить данные через context.

Параметр context предоставляет информацию о функции выполнение. Одинаковые по типам асинхронных функций, контексту содержит поля eventId, timestamp, eventType, resource и Титулы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...