Firebase和后端逻辑

我是parse.com用户,现在我正在寻找另一项服务。 我怎样才能把最终逻辑写回firebase?

让我说我想validation服务器端的所有值,或触发的东西。 我想到了一个解决scheme,但我想知道推荐的方法。

我想

  1. 创build使用express的nodejs服务器。
  2. 创build中间件来处理逻辑。
  3. 从应用程序发送rest请求,触发中间件
  4. 使用firebase的nodejs sdk根据http请求的参数更新值。
  5. 并在应用程序的firebase处理程序上实施,以侦听更改

在这里输入图像描述

他们的东西更简单? 在parsing我使用云代码时,我希望逻辑将不在客户端,而在服务器端。

更新(2017年3月10日)虽然下面概述的体系结构仍然有效,并且可以用于将Firebase与任何现有基础结构结合使用,但Firebase刚刚发布了Firebase的Cloud Functions ,该function允许您在Google服务器上运行JavaScriptfunction,以响应Firebase事件(如数据库更改,用户login等等)。


Firebase应用程序的常见体系结构在此博客文章中已经很好地定义了Firebase适合您的应用程序的位置? 。

您提出的架构最接近架构3,您的客户端代码直接与Firebase 您的node.js服务器通信。

我还强烈build议您考虑选项2,其中客户端和服务器之间的所有交互都通过Firebase运行。 Flashlightsearch集成是这种架构的一个很好的例子。 客户将其search查询写入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(); } }); }) 

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

这是我会做的:

  • 使用“.validate ”规则validation所有input。 没有服务器需要的。
  • 如果您有要运行的任务,请使用Firebase Queue ,一个机器人来运行这些任务,然后就完成了。

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

  • 如果您尝试使用您发布的关系图,那么在服务器上获取身份validation对象(但不是不可能)会有点棘手。 如果您不需要validation用户来允许请求,请继续。

  • 如果您仅使用常规的Firebase应用程序来侦听更改并作出响应(例如编辑对象,如Frank van Puffelen的示例代码),则可能会遇到可伸缩性问题。 一旦你的后端扩展到两个(或更多)实例,一个firebase编辑将触发所有这些任务。 每个实例都会注意到发生了一些变化,然后每运行一次相同的任务,每次添加/replace响应对象一次,并尝试每次删除一次请求对象。

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

2017年

今天Google宣布了Firebase的Cloud Functions https://firebase.google.com/features/functions/

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