Firebase和后端逻辑

时间:2016-02-12 10:37:31

标签: node.js firebase

我是parse.com用户,现在我正在寻找其他服务。 如何将结束逻辑写回firebase?

假设我要验证服务器端的所有值,或触发事物。我想过一个解决方案,但我想知道推荐的方式。

我想

  1. 使用express。创建nodejs服务器。
  2. 创建中间件以处理逻辑。
  3. 从应用程序发送休息请求,触发中间件
  4. 使用firebase的nodejs sdk根据http请求的参数更新值。
  5. 在应用程序firebase处理程序上实现侦听更改
  6. enter image description here

    他们的事情更简单?在解析中我使用了云代码,我希望逻辑不会在客户端,而是在服务器端。

3 个答案:

答案 0 :(得分:42)

更新(2017年3月10日)虽然我在下面概述的架构仍然有效且可用于将Firebase与任何现有基础架构相结合,但Firebase刚刚发布Cloud Functions for Firebase ,允许您在Google的服务器上运行JavaScript函数以响应Firebase事件(例如数据库更改,用户登录等等)。

Firebase应用程序的常见体系结构在此博客Where does Firebase fit in your app?中定义得非常明确。

您建议的架构最接近架构3,您的客户端代码直接与Firebase 直接对话您的node.js服务器。

我还强烈建议您考虑选项2,其中客户端和服务器之间的所有交互都通过Firebase运行。这种架构的一个很好的例子是Flashlight search integration。客户将其搜索查询写入Firebase数据库。服务器侦听此类请求,执行查询并将响应写回数据库。客户端等待响应。

此服务器的简单大纲可能是:

var ref = new Firebase('https://yours.firebaseio.com/searches');
ref.child('requests').on('child_added', function(requestSnapshot) {

    // TODO: execute your operation for the request

    var responseRef = ref.child('responses').child(requestSnapshot.key());
    responseRef.set(result, function(error) {
        if (!error) {
            // remove the request, since we've handled it
            requestSnapshot.ref().remove();
        }
    });
})

使用最后一种方法,客户端永远不会直接与您的服务器通信,从而消除了您必须担心的所有潜在问题。出于这个原因,我有时将它们称为“机器人”,而不是服务器。

答案 1 :(得分:4)

<强> 2017

今天,Google发布了 Firebase云端功能 https://firebase.google.com/features/functions/

对于Firebase中的体系结构和后端逻辑,这是一个很好的解决方案。

答案 2 :(得分:2)

这就是我要做的事情:

  • 使用".validate" rules验证所有输入。不需要服务器。
  • 如果您要运行任务,请使用Firebase Queue,运行任务的机器人,您就完成了。

如果你不做最后一个,你可能会遇到两个问题:

  • 如果您尝试使用您发布的图表,在服务器上获取auth对象会有点棘手(但并非不可能)。如果您不需要验证用户是否允许请求,请继续。

  • 如果您只使用常规firebase应用程序来监听更改并做出响应(例如编辑对象,例如Frank van Puffelen的示例代码),则可能存在可伸缩性问题。一旦您的后端扩展到两个(或更多)实例,firebase编辑将触发所有这些实例上的任务。每个实例都会注意到有一个更改,然后每个实例执行相同的任务,每个实例添加/替换响应对象,并尝试删除每个请求对象..

使用Firebase队列可以避免这两个问题。