是使用Firebase作为AngularJS和NodeJS之间的一个“不好”的想法?

我正在寻找关于如何构build我正在构build的系统的反馈。

我有几个Node.JS脚本更新Firebase数据库。 然后我有几个前端的AngularJS应用程序从Firebase数据库读取数据。

这很好。

现在我开始需要与Node.JS服务器通信的前端AngularJS应用程序。 例如发送电子邮件给某人。

所以我可以做的一个方法是使用Firebase DB作为中介。 我可以改变数据库中的一个值..例如一个对象的属性timedOut:false; 为真; 服务器然后有一些代码

firebaseRef.on('child_changed', function (snapshot) { var changedNode = snapshot.val(); if(changedNode.timedOut) { 

我试图让我的头脑如何最好地让前端应用程序通信任务到服务器。 我想除了使用Firebase作为中介之外,还要创build类似http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4的东西?

使用Firebase。

如果您使用Firebase作为您的主数据存储,我强烈build议不要直接与您的Node后端交谈。 必须将您的Angular应用程序连接到您的Node脚本将需要Firebase帮助减less的大量不必要的开销。

如果你想build立一个连接到你的后端,你将不得不暴露和端点为您的Angular应用程序与您交谈。 您还必须使用AJAX或一些Web套接字实现来发送数据。 这是没有意义的,因为Firebase已经在处理您的数据传输。

为了做任何后端types的任务,比如发送电子邮件,你可以连接一个监听器,这将帮助你发现这些电子邮件,只要你指出已经更新。

在你的应用程序可能看起来像这样:

 $scope.ref = $firebase(new Firebase('<your-firebase>/emailsToSend')); $scope.updateOnClick = function() { var email = // get this somehow $scope.ref.$push(email); }; 

然后在你的Node JS服务器上

 var ref = new Firebase('<your-firebase>/emailsToSend'); // this is a dummy object for the example only var emailClient = new EmailClient(); ref.on('child_added', function(snap) { var emailToSend = snap.val(); // send email emailClient.send(email, function afterSend() { // if you can hook into when the email has sent // delete the data afterwards snap.ref().remove(); }); }); 

对于像发送电子邮件的服务,你可能想看看Zapier。 他们挂钩到Firebase并为您处理这些事件。