Ошибка при разбиении файла index.js в облачной функции Firebase - PullRequest
0 голосов
/ 11 июня 2019

Я попытался разделить файл index.js на несколько файлов.Я хотел бы посчитать количество детей в базе данных.Ранее мой index.js файл был

exports.updateUserBookCount = functions.database.ref('/Users/{userID}/Books/{bookID}')
      .onWrite(async (change,context)=>{

        const collectionRef = change.after.ref.parent;
        const userID = context.params.userID;
        const countRef = admin.database().ref(`/UserInfo/${userID}/usersBooks`);
        console.log("book counter : "+collectionRef);

        const bookList = await collectionRef.once('value');
        return await countRef.set(bookList.numChildren());

      });

Я создал новый файл counter.js Это


//counter.js
exports.userBookCount = function(change,context,admin){
    const collectionRef = change.after.ref.parent;
    const userID = context.params.userID;
    const countRef = admin.database().ref(`/UserInfo/${userID}/usersBooks`);
    console.log("book counter : "+collectionRef);

    const bookList = await collectionRef.once('value');
    return await countRef.set(bookList.numChildren());
}

Затем я изменил index.js как

//index.js
const admin = require('firebase-admin');
admin.initializeApp();
const counter = require('./counter');
exports.updateUserBookCount = functions.database.ref('/Users/{userID}/Books/{bookID}')
      .onWrite(async (change,context)=>{
         counter.userBookCount(change,context,admin);
      });

Но я получаю ошибку в counter.js 9:28 Ошибка синтаксического анализа: непредвиденный токен collectionRef при развертывании.

1 Ответ

1 голос
/ 11 июня 2019

Я не совсем понимаю вашу структуру, но, полагаю, вы просто хотите разделить файлы для организации кода?Если это так, вот как я бы это структурировал:

//index.js
const admin = require('firebase-admin')
const functions = require('firebase-functions')
admin.initializeApp()

const counter = require('./counter.js')

exports.updateUserBookCount = functions.database.ref('/Users/{userID}/Books/{bookID}').onWrite(counter);
//counter.js
const admin = require('firebase-admin')

//This function becomes counter in your index.js - you don't get counter.userBookCount because you have a single export from this file
module.exports = (change, context) => {
  // rest of your logic
}

//If you really want counter.userBookCount because you'll have other functions here, export multiple functions like this:
module.exports = {
  userBookCount: (change, context) => {
    // rest of your logic
  },
  someOtherBookFunction: (change, context) => { ... }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...