【问题标题】:Is using Firebase as the intermediary between AngularJS and NodeJS a 'bad' idea?使用 Firebase 作为 AngularJS 和 NodeJS 之间的中介是一个“坏”主意吗?
【发布时间】:2014-12-06 08:33:02
【问题描述】:

我正在寻找有关如何构建我正在构建的系统的反馈。

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

这很好用。

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

因此,我可以做到这一点的一种方法是使用 Firebase 数据库作为中介。我可以更改数据库中的值..例如具有属性 timedOut: false 的对象;为真;然后服务器有一些代码,如

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

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

【问题讨论】:

  • 为什么不直接与你的节点后端通信呢?如果您想要实时通信,请查看 socket.io(当您想发送电子邮件时肯定不需要。)。
  • 正如迪特所说:直接沟通是有意义的。但是如果你更喜欢使用 Firebase 作为数据库,你可以看看这个工作队列:github.com/firebase/firebase-work-queue
  • 不,在这种情况下直接沟通没有意义。当 Firebase 为您执行此操作时,为什么还要通过公开端点和通过 AJAX 或 Web 套接字建立连接的开销?在这种情况下,使用 Firebase 是最简单、最有效的途径。

标签: javascript node.js angularjs firebase


【解决方案1】:

使用 Firebase。

如果您使用 Firebase 作为您的主要数据存储,我强烈建议您不要直接与您的 Node 后端对话。必须将 Angular 应用程序连接到 Node 脚本需要大量不必要的开销,而 Firebase 有助于减少这些开销。

如果您想建立与后端的连接,您必须公开和端点,以便您的 Angular 应用程序与您通信。您还必须使用 AJAX 或一些 Web 套接字实现来发送数据。这没有任何意义,因为 Firebase 已经在处理您的数据传输了。

对于执行任何后端类型的任务,例如发送电子邮件,您可以连接一个侦听器,这将帮助您在表明某些内容已更新时触发这些电子邮件。

在您的应用中,它可能如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多