При создании коллекции документы добавляются в нее сразу - PullRequest
0 голосов
/ 30 марта 2020

Все еще изучая Firestore, я хочу написать функцию, которая создаст несколько документов при создании коллекции одновременно. Поэтому я написал этот код, чтобы попробовать его. я видел код как ответ на что-то похожее.

    const fsRef = admin.firestore();

export const moreCreations = functions.firestore
      .document(
        "dev_env/schools/school_collections/KithAndKin7394/students/{userID}"
      )
      .onCreate((snap, context) => {
        const newSchoolRef = fsRef
          .collection("dev_env")
          .doc("schools")
          .collection("school_collections")
          .doc("KithAndKin7394")
          .collection("students")
          .doc(snap.id);

         // Trying something on documents

         const documentIds = [
           'CRK_IRK',
           'PHE',
           'agricScience',
           'basicScience',
           'basicTechnology',
           'businessStudies',
           'computerStudies',
           'creativeArts',
           'english',
           'frenchLanguage',
           'hausaLanguage',
           'homeEconomics',
           'iboLanguage',
           'maths',
           'socialStudies',
           'yoruba'
         ];

         const batch = fsRef.batch();
         const data ={};
         const setbatch = documentIds.forEach(docId => {
          batch.set(newSchoolRef.collection('JSS1').doc('${docId}'), data);
         })
         batch. commit().then(response => {
           console.log('Success');
         }).catch(err => {
           console.error(err);
         })
      });

Я получаю следующие ошибки:

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint C:\brighterbrains\functions
> tslint --project tsconfig.json


ERROR: C:/brighterbrains/functions/src/index.ts:168:23 - Expression has type `void`. Put it on its own line as a statement.

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! functions@ lint: `tslint --project tsconfig.json`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the functions@ lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\dell\AppData\Roaming\npm-cache\_logs\2020-03-30T02_04_34_455Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code2

Что я хочу, это когда создается коллекция "JSS1", документы «DocumentsId» добавляются к нему сразу. Код с этого форума, но он не работает. Пожалуйста, кто-нибудь может указать мою ошибку и помочь мне с исправлениями? В документации ничего не говорится и ничего не говорится о таких действиях.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Удалить const setbatch = до forEach(). У него нет возвращаемого значения.

0 голосов
/ 31 марта 2020

Я решил это. Ниже приведен обновленный код:

export const moreCreations = functions.firestore
  .document(
    "dev_env/schools/school_collections/KithAndKin7394/students/{userID}"
  )
  .onCreate((snap, context) => {
    const newSchoolRef = fsRef
      .collection("dev_env")
      .doc("schools")
      .collection("school_collections")
      .doc("KithAndKin7394")
      .collection("students")
      .doc(snap.id);

     // Trying something on documents

     const documentIds = [
       'CRK_IRK',
       'PHE',
       'agricScience',
       'basicScience',
       'basicTechnology',
       'businessStudies',
       'computerStudies',
       'creativeArts',
       'english',
       'frenchLanguage',
       'hausaLanguage',
       'homeEconomics',
       'iboLanguage',
       'maths',
       'socialStudies',
       'yoruba'
     ];

     const batch = fsRef.batch();
     const data ={};
      documentIds.forEach(docId => {
      batch.set(newSchoolRef.collection('JSS1').doc(docId), data);
     })
     batch.commit().then(response => {
       console.log('Success');
     }).catch(err => {
       console.error(err);
     })
  });

Он успешно развернут, и при создании документа автоматически создается коллекция JSS1 с автоматически добавленными документами в массиве documentsId.

Хочу поблагодарить @samthecodingman за помощь в поиске области, которую мне нужно отредактировать. И @DougStevenson тоже.

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