是使用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并为您处理这些事件。