小编Lew*_*Lew的帖子

保持打开MongoDB数据库连接

在使用MongoDB的许多介绍性示例中,您会看到如下代码:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
    /* Some operation... CRUD, etc. */
    db.close();
});
Run Code Online (Sandbox Code Playgroud)

如果MongoDB与任何其他数据库系统一样,open并且close操作通常在时间上是昂贵的.

所以,我的问题是:只需执行MongoClient.connect("...一次,将返回db值分配给某个全局模块,在模块中具有各种功能进行各种与数据库相关的工作(将文档插入集合,更新文档等等)即可.当它们被应用程序的其他部分调用时(从而重新使用该db值),然后,当应用程序完成时,才会执行close.

换句话说,open并且close只完成一次 - 不是每次你都需要去做一些与数据库相关的操作.而且,当你实际完成所有与数据库相关的工作时,你不断重复使用db在初始阶段返回的对象open\connect,只在最后处理它close.

显然,由于所有的I/O都是异步的,所以在close确定最后一个数据库操作完成之后才发出close.看起来这样应该没关系,但我想仔细检查,以防万一我错过了一些东西,因为我是MongoDB的新手.谢谢!

mongodb node.js

63
推荐指数
3
解决办法
1万
查看次数

当Chrome Hangout扩展程序始终位于顶部并固定时,该面板是如何显示的?

启动Chrome扩展程序Google-Hangouts时,最初会显示一个列出成员的面板和一个用于创建新环聊的链接/按钮.

此面板最初固定在浏览器窗口的右下角.当这样固定时,它会一直保持在顶部,因为浏览器导航会话仍在继续:用户可以转到不同的URL,更改标签等,并且该面板保持在右下方并保持在所有其他窗口之上(或至少在主浏览器窗口的顶部).

一旦取消固定,您可以将其拖动到窗口周围,但它不再始终位于顶部.

我的问题是,如何实现 - 我需要调用什么代码或什么功能来创建窗口/面板,以便它始终保持固定并始终位于顶部?是否存在与某些涉及的本机代码的绑定?还有其他方法吗?

如果有人知道并且可以展示或解释,我将非常感激,因为这个功能是我正在努力建立的扩展的关键.

非常感谢!

google-chrome-extension hangout

9
推荐指数
1
解决办法
3339
查看次数

Firebase与移动应用程序

FireBase仅适用于桌面浏览器,还是可以与移动应用程序一起使用?我有一种感觉它不能用于移动(尚).

例如,虽然Android使用WebKit引擎(并且其WebView组件显示HTML页面而不需要完整的浏览器,并且HTML页面可以直接通过URL加载到WebView中或作为字符串注入),但Android WebKit不会然而(据我所知)支持WebSockets,所以如果FireBase使用WebSockets(而且我认为我在某处读过它),那么这就排除了移动应用程序(至少是Android - 不了解iOS).

使用FireBase在移动设备上实现实时应用程序的任何其他方式?谢谢!

mobile android firebase

6
推荐指数
1
解决办法
2076
查看次数

使用Passport通过Facebook策略登录应用时,重新验证过期的AccessToken(或获取新的)

在各种情况下,Facebook的内部AccessToken(用于Facebook API中的各种功能和其他情况)可能会变得无效.例如,如果用户在使用依赖Facebook登录的应用程序的会话之间更改其密码.还有一些其他案例.

但是,会发生什么情况,您的应用程序基本上崩溃,出现如下错误:data={"error":{"message":"Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.", "type":"OAuthException", "code":190, "error_subcode":460}}.

Passport的Facebook策略使用AccessToken,只要用户通过Passport登录/验证,它就可用于应用程序.但问题是遇到上述错误时该怎么办.Facebook在PHP中给出了一个复杂的重新认证流程,但一般意义上说你需要用Facebook重新授权你的应用程序.

问题是,即使从Facebook页面删除Facebook应用程序,并迫使依赖Facebook登录的应用程序重新授权,似乎Passport + Facebook策略仍然从浏览器的会话存储中获取最后一个现有的AccessToken.(至少那是我在Mozilla/Fx 26上看到的).我已经多次重新授权我的应用程序了,但是在调试并查看Passport返回的内容时,我总是找回相同的无效AccessToken.看起来如果会话存储中存在AccessToken,Passport就会选择它,而不是从Facebook获取新的.

那么有没有办法 - 在Passport + Facebook策略中 - 基本上忽略或覆盖任何存储的AccessToken并且总是在Facebook发出新的请求,如果出现这种错误?根本不清楚如何实现这一点.谢谢您的帮助.

更新:调用策略的示例代码refreshToken作为参数; 这是做什么的?这个参数有可能的解决方案吗?

passport.use(new FacebookStrategy(
{
...
},
function(accessToken, refreshToken, profile, done) 
{
Run Code Online (Sandbox Code Playgroud)

passport-facebook passport.js

5
推荐指数
1
解决办法
1410
查看次数

在Heroku上运行Node.js应用程序时出错

在尝试在Heroku上运行一个简单的Node.js应用程序时,我遇到了令人沮丧的"错误".Heroku本身没有报告错误 - 应用程序已启动(未崩溃,未显示"Hxx"代码); 我得到的是这个:

heroku[router]: at=info method=GET path=/index.html
host=realsheek.herokuapp.com fwd="24.63.82.165" dyno=web.1 connect=0ms
service=4ms status=404 bytes=33
Run Code Online (Sandbox Code Playgroud)

当我从浏览器运行应用程序时,它说Cannot GET.我不知道它在尝试什么GET.我的应用程序是使用Mozilla的SocialAPIs的SocialProvider的测试平台.该应用程序本身是演示版的一个版本https://github.com/mixedpuppy/socialapi-demo.修复了一些错误,否则这与此演示相同(我使用了repo,只修复了错误).我有一个index.html安装SocialProvider 的页面,此时服务器端应用程序启动并完成其余的魔法.它运行良好localhost,但当我把它推到Heroku时,它失败了.报告没有问题git push(只是通常的"无自述数据"警告).

我很难过,因为我无法看到它试图获得的东西; 显然404错误表明缺少页面,但应用程序不会调用任何HTML页面,并且所需的一切都存在(因为我的运行localhost确认).

我意识到这不是很多,没有看到实际的应用程序,也不知道它正在尝试做什么.并且没有实际的错误报告 - 只有404状态,它显然可以是任何东西.但我现在很难过,所以如果有人有任何见解或建议,我会非常感激.

mozilla get heroku node.js

2
推荐指数
1
解决办法
8509
查看次数