【发布时间】: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