【问题标题】:Creating realtime project with Hapi, MongoDb, NodeJS & AngularJS使用 Hapi、MongoDb、NodeJS 和 AngularJS 创建实时项目
【发布时间】:2016-01-07 13:22:39
【问题描述】:

我正在使用 Hapi、MongoDb、NodeJS 和 Angular 创建我的第一个 Web 应用程序。我已经可以从我的应用中获取和保存一些数据了。

现在每次需要刷新浏览器中的数据,都必须重启服务器。因为数据只在服务器启动时获取,所以使用以下函数:

var getUsers = function(db, callback) {
    db.collection("users", function(err, collection) {

        if (err) return callback(err, "error getting collection");
        collection.find({}).toArray(function(err, users) {

            if (err) return callback(err, "error getting find()");

            console.log("returning users list: ");
            Common.setUsers(users);
            //console.log(Common.getUsers());
        });
    });
};

然后可以通过Common.getUsers()获取用户

现在,如果我想创建一个列表来实时显示哪些用户注册了我的应用程序,该怎么办?所以不需要重启服务器。我怎样才能做到这一点?

我做了一些搜索,找到了 RethinkDb,它有changefeeds。 (我希望我早点找到这个)。 MongoDb 没有 Rethink 实现它的方式的 changefeeds。

有没有一种方法可以让我自己创建这些变更源?或者是否有其他工具可以为我实现这一点并与 MongoDb 一起使用?

【问题讨论】:

  • 您应该将 getUsers 函数放在处理程序中,这样您就可以在收到“GET”请求时调用函数并返回集合中的用户数组。
  • 嘿@Forza,请您列出您想要实施的整个过程,我相信我可以提供帮助。你想要的东西对我来说有点难以掌握。
  • 嘿@GandalftheWhite,我想要实现的是,每当服务器上发生某些事情时,它就会自动在客户端上可用。因此,例如,每当一个用户执行特定操作(例如创建待办事项)时,其他用户需要能够在登录时看到这一点。并且不需要我每次都重新启动服务器 :) 感谢帮助我!跨度>
  • 对我来说似乎简单直接。假设有 5 个用户可以访问的公共时间线。现在在角度部分,每当用户在输入用户名和密码后通过身份验证时,我都会发出一个 get 请求 /gettimeline -> 我将在节点 js 服务器端路由请求,该服务器端会将响应 JSON 或其他任何内容发送到 Angular,然后 Angular 将显示数据给用户。看起来很简单,如果有 5 个用户登录并且中间发生了一些变化,我们可以使用推送通知告诉他们新数据已添加到时间轴,例如 stackoverflow 和 facebook 通知
  • 如果我的回答有任何歧义,请告诉我

标签: node.js mongodb real-time rethinkdb hapijs


【解决方案1】:

有点晚了,但我创建了一个游乐场应用程序,它展示了如何使用 hapi 和 nes 插件构建实时时间线。它还利用 RethinkDB 并利用他们的 changefeed 功能: Realtime timeline with hapi.js, nes and RethinkDB

也许这对你也有一点帮助。

【讨论】:

  • 嗨 Patrick,我现在才看到这个。你有一个非常有趣的示例应用程序。谢谢你写!你认为如果没有 RethinkDB changefeed 这个概念是可能的吗?我已经围绕 MongoDB 创建了太多应用程序,现在无法切换。
  • 很高兴听到你喜欢它。在示例应用程序中,我注意到它也可以在没有 RethinkDB changefeeds 的情况下工作——您可以在 save 方法中发出新创建的条目。因此,也许在您的情况下,将新项目保存到 MongoDB,然后将其发送到套接字。
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2014-12-24
  • 2017-05-29
  • 2021-03-23
  • 1970-01-01
相关资源
最近更新 更多