【问题标题】:Construct objects for client in Firebase Cloud Functions在 Firebase Cloud Functions 中为客户端构造对象
【发布时间】:2018-01-26 15:02:12
【问题描述】:

我正在开发一个使用 Firebase 作为后端的简单注册系统。我成功地验证了用户并写入数据库。我有一个具有以下结构的课程和用户索引:

{
  courses: {  // index all the courses available
    key1: {
      title: "Course 1",
      desc: "This is a description string.",
      date: { 2018-01-01 12:00:00Z }
      members: {
        user1: true
        ...
      }
    }, 
    key2 { ... },
  },
  users: {    // track individual user registrations
    user1: {
      key1: true,
      ...
    },
    user2: { ... }
  }
}

我有一个监视用户添加课程的云函数,它使用相应的courseId 构建一个数组,该数组将查看courses 节点以返回适当的项目。

exports.listenForUserClasses = functions.database.ref('users/{userId}')
  .onWrite(event => {
    var userCourses = [];
    var ref = functions.database.ref('users/{userId}');
    for(var i=0; i<ref.length; i++) {
      userCourses.push(ref[i])
    }
    console.log(userCourses); // an array of ids under the user's node
  });

所以,我的问题有两个部分:

  1. 如何在页面加载时构建更新的对象?
  2. 如何将函数返回给客户端脚本?

【问题讨论】:

    标签: javascript firebase-realtime-database google-cloud-functions


    【解决方案1】:

    问题 1:您希望从客户端获取对数据库路径的引用。然后你想调用 child_added 事件。将其保存在内存中,每当添加一个时都会调用它,然后您可以更新您的 UI。

    var ref = db.ref("path/to/courses");
    ref.on("child_added", function(snapshot, prevChildKey) {
        var newClass = snapshot.val();
    });
    

    如果您完全刷新页面,那么您始终可以使用 value 选项并调用 once

    从数据库路径中再次获取数据

    问题 2: 你不知道。这被认为是一个异步函数。如果您想要函数的响应,那么您将设置一个 HTTP 触发器并等待该函数的响应。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2021-11-18
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多