我是parse.com用户,现在我正在寻找其他服务。 如何将结束逻辑写回firebase?
假设我要验证服务器端的所有值,或触发事物。我想过一个解决方案,但我想知道推荐的方式。
我想
答案 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)
这就是我要做的事情:
如果你不做最后一个,你可能会遇到两个问题:
如果您尝试使用您发布的图表,在服务器上获取auth对象会有点棘手(但并非不可能)。如果您不需要验证用户是否允许请求,请继续。
如果您只使用常规firebase应用程序来监听更改并做出响应(例如编辑对象,例如Frank van Puffelen的示例代码),则可能存在可伸缩性问题。一旦您的后端扩展到两个(或更多)实例,firebase编辑将触发所有这些实例上的任务。每个实例都会注意到有一个更改,然后每个实例执行相同的任务,每个实例添加/替换响应对象,并尝试删除每个请求对象..
使用Firebase队列可以避免这两个问题。