Cloud Firestore Function: значение для аргумента «documentPath» не является допустимым путем к ресурсу - PullRequest
0 голосов
/ 01 октября 2019

Предполагается, что приведенная ниже функция вызывается всякий раз, когда создается сообщение (успешно), а затем рассылает этот postId с некоторыми незначительными подробностями всем, кто следует за категорией (ошибка).

Пользователь может публиковать сообщения в более чем одной категории, и это будет выполняться несколько раз для одного и того же сообщения, но в этом случае он должен заменить любое существующее сообщение с соответствующим идентификатором postId. Не оптимизирован наверняка, но просто пытаюсь его запустить и запустить.

Но я получаю следующую ошибку при запуске нижеуказанной облачной функции:

Error: Value for argument "documentPath" is not a valid resource path. Path must be a non-empty string.

Моя структура базы данныхследующее. Не стесняйтесь и дайте мне знать, если вам нужна дополнительная информация для диагностики происходящего.

posts -> postId -> categories:["category1","category2"]

categories -> category -> followers -> uid -> following:true

feed -> uid -> posts -> postId

Облачная функция:

exports.addQuestionToCategory = functions.firestore.document('posts/{postId}').onCreate((docSnapshot, context) => {
    const data = docSnapshot.data()

    const selectedCategories = data.categories;

    const newTimestamp = data.timestamp;
    const newPostId = data.postId;

    selectedCategories.forEach(category => {
        var categoryFollowers = db.collection('categories').doc(category).collection('followers').where('following', '==', true)

        var followingTransaction = db.runTransaction(transaction => {
            return transaction.get(categoryFollowers).then(restDocs => {
              restDocs.forEach(doc => {
                  var userDocData = doc.data()
                  var followerId = userDocData.id
                  var followerRef = db.collection(`feed/${followerId}/posts`).doc(newPostId)

                  const objectToAdd = {
                    "postId":newPostId,
                    "timestamp":newTimestamp,
                    "category":category
                };

                transaction.set(followerRef, objectToAdd);
              })
                return true
            }); 
          });

        return followingTransaction.then(values => {
            return Promise.resolve()
            }) .catch(error => {
                console.log(error)
                return Promise.reject(error);
            });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...