Node.js Firebase和后端逻辑

Node.js Firebase和后端逻辑,node.js,firebase,Node.js,Firebase,我是parse.com用户,现在我正在寻找另一个服务。 如何将后端逻辑写入firebase 假设我想验证服务器端的所有值,或者触发事件。我想了一个解决方案,但我想知道推荐的方法 我想 创建使用express的nodejs服务器 创建中间件来处理逻辑 从应用程序发送rest请求,触发中间件 使用firebase的nodejs sdk根据http请求的参数更新值 并在侦听更改的应用程序firebase处理程序上实现 他们想要更简单的吗?在解析中,我使用了云代码,我希望逻辑不会在客户端,而是在服务器

我是parse.com用户,现在我正在寻找另一个服务。 如何将后端逻辑写入firebase

假设我想验证服务器端的所有值,或者触发事件。我想了一个解决方案,但我想知道推荐的方法

我想

  • 创建使用express的nodejs服务器
  • 创建中间件来处理逻辑
  • 从应用程序发送rest请求,触发中间件
  • 使用firebase的nodejs sdk根据http请求的参数更新值
  • 并在侦听更改的应用程序firebase处理程序上实现
  • 他们想要更简单的吗?在解析中,我使用了云代码,我希望逻辑不会在客户端,而是在服务器端。

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


    Firebase应用程序的通用架构在这篇博文中有很好的定义

    您建议的架构与架构3最接近,在架构3中,客户端代码直接与Firebase和node.js服务器通信

    <>我也强烈建议您考虑选项2,客户机和服务器之间的所有交互都通过FixBase.这种体系结构的一个很好的例子是。客户端将其搜索查询写入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();
            }
        });
    })
    

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

    我会这样做:

    • 使用验证所有输入。不需要服务器
    • 如果您有任务要运行,请使用bot运行任务,这样您就完成了
    如果不执行最后一项,可能会出现两个问题:

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

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

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

    2017

    今天,谷歌宣布了Firebase的云功能


    这是Firebase中架构和后端逻辑的一个很好的解决方案。

    好问题!正如您可能已经看到的,Firebase还没有云代码的直接等价物。我在下面描述/链接了几种方法。如果有不清楚的地方,请发表评论!?我认为这是一个非常强大的组合。这是一个排队系统。因此,客户机可以将它想要的任何东西(好的:允许的任何东西)作为请求,但是您的bot/服务器决定如何处理它以及给出什么响应(如果有的话)。它可以忽略它认为“无效”的请求,让恶意客户端等待响应。您还可以将错误处理构建到请求/响应协议中,并发送“NOPE”类型的响应。它就像一个API,只是您使用我们的数据库来公开它。所以在这种情况下,我需要一个服务器。这不是更好的使用socket.io吗?在我看来,删除一层似乎更简单。如果你喜欢做中间件,有很多选择。“更好”是主观的。我只是想详细说明如何在Firebase上构建API,而无需使用中间件。这是目前Firebase最常用的云代码替代方案。对于任何对上述消息总线/队列系统感兴趣的人来说,这一系列文章可能会很有用。我了解了这一点,现在它解决了我一个月前面临的问题,谢谢Firebase团队!我提出这个StackOverflow问题是因为我无法使用唯一的firebase过滤我的电子商务网站。我怎样才能做到这一点。如果我使用RESTAPI,你能告诉我应该做什么吗do@George您可以使用新的firebase cloudstore。但仍然不能进行全文搜索。我认为您可能希望使用外部搜索引擎(如algolia)在您的网站中启用高级搜索功能。通过一些评论,firebase可能与React Native存在一些问题。想知道如果应用程序是基于RN构建的,是否有任何问题?