Как зациклить «толкание» в базе данных Firebase с помощью облачных функций - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно добавить в свою базу данных список от 3 учеников до 1 учителя (и предположить, что его еще нет).Также следует вернуть словарь клиенту.Я использую облачные функции.Вот моя идея, мое приложение зависает, когда я его запускаю.

exports.addNewStudents = functions.https.onCall((data, context) => {
const totalStudent = data.total; //"3"
const teacher = data.teacher //"Robert"
var studentListToReturn = new Dictionary<string, object>(); 

for (int i=0; i<totalStudent,i++ )
{   // 'i' is going to be the student's ID and I use it in the path:
return admin.database().ref('studentsTable/teacher/'+i).push({

   date: Date();,
   class: "Highschool",
   }).then(() => {
  studentListToReturn[i]=i ;
  })

 return studentListToReturn;

В моей БД оно должно выглядеть так:

  • StudentsTable

    • Роберт

      • 0 {дата: 13.11.2017, класс: "Highschool"}
      • 1 {дата: 13.11.2008, класс: "Highschool"}
      • 2 {дата: 13.11.2008, класс: "Highschool"}

I 'm new для облачных функций (и js), не могли бы вы помочь?

1 Ответ

0 голосов
/ 14 ноября 2018

Я отредактировал код и использовал асинхронное ожидание, чтобы сделать его более читабельным. Было много проблем с синтаксисом JS. Я бы предложил использовать шаблон функций firebase машинописи и использовать код Visual Studio в качестве редактора, который предоставит вам IntelliSense. Также вам нужно будет добавить проверку подлинности вверху, чтобы гарантировать, что только определенные люди могут вызывать функцию.

exports.addNewStudents = functions.https.onCall(async (data, context) => {
    // Need to add in an auth check to make sure they have permission to do the below

    const totalStudent = data.total; //"3"
    const teacher = data.teacher //"Robert"
    const studentListToReturn: Array<any> = [];

    for (let i = 0; i < totalStudent; i++ ) {   // 'i' is going to be the student's ID and I use it in the path:
        const student: any = {
            studentId: i,
            date: Date(),
            class: "Highschool"
        }
        await admin.database().ref(`studentsTable/${teacher}/${i}`).set(student)
        studentListToReturn.push(student);
    }
    return studentListToReturn;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...