RangeError:超过mongoose的最大调用堆栈大小

我正在尝试使用时间段进行聚合。 然后,我想返回一个数组,每天都有值(没有find文档时为0)。 aggeagate函数令人惊叹,但是当我replacecallback(以前的console.log)是这样的: Star.aggregate([{ $match: { "mod": new mongoose.Types.ObjectId("53765a122c0cda28199df3f4"), "time_bucket.month": new TimeBucket().month } }, { $group: { _id: "$time_bucket.day", stars: { "$sum": 1 } } }, { $sort: { '_id': 1 } }], function (err, mods) { console.log(err, mods); mods = mods.map(function (model) { return model.toObject ? model.toObject() : model }); var i, time, docs […]

expression4路线问题

刚刚学习nodejs,expression,玉。 在取得进展的同时,我无法理解路线如何运作。 我有路线文件夹中的路线和视图文件夹中的视图(Jade文件)。 这有效,但我不知道如何。 假设我有一个页面富。 在路线中,我有foo.js: var express = require('express'); var router = express.Router(); /* GET foo page*/ router.get('/', function(req, res) { res.render('foo', {title: 'Foo' }); }); module.exports = router; Jade文件中调用Foo的菜单链接具有href =“/ foo”属性。 怎么router.get('/',…)工作? 它不应该是 router.get('/foo', function(req, res) { res.render('foo', {title: 'Foo' }); }); 当我尝试这样做,但是,它无法find路线,我得到一个404,这似乎反对路由器文档。 我可以随它去,让所有的路线获得('/',…)或后('/',…),这确实有效,但它似乎是错误的。 我错过了什么? 感谢您的洞察力。

HTTPS NodeJS和Heroku。 强制HTTPS?

我有一个在Heroku上运行的NodeJS HTTP(非S)服务器。 我configuration了SSL,并接受对HTTPS的请求。 我使用香草HTTP服务器的原因是因为以下原因 : SSL termination occurs at Heroku's load balancers; they send your app plain (non-SSL) traffic, so your app should create a non-HTTPS server." 不幸的是,我的应用程序仍然响应简单的HTTP请求。 我想强制redirect或从HTTP到HTTPS的东西。 我可以用一些中间件来做到这一点: /* At the top, with other redirect methods before other routes */ app.get('*',function(req,res,next){ if(req.headers['x-forwarded-proto']!='https') res.redirect('https://mypreferreddomain.com'+req.url) else next() /* Continue to other routes if we're not […]

REST风格的Web服务的urlHTML与JSON

为了生成访问客户数据的url,我遵循以下规范: 通过URL:wwww.somesite.com/customers交付与客户有关的所有JSON数据 要创build,更新或删除,请分别使用www.somesite.com/customers/ url和相应的动词POST,PUT和DEL 不过,我想提供一个html页面(最好在www.somesite.com/customers),通过AJAX调用访问所有的JSON数据。 我是否应该使用基于请求头中的HTML或JSON在相同的URL(www.somesite.com/customers)上进行响应? 还是有更好的/标准的方法来做到这一点?

是否有一个聚合物组件可以简化与MongoDB的通信?

鉴于聚合物和Web组件具有简化开发的承诺,我想知道是否有人开发了一个简化与MongoDB后端对话的包装组件? 有人知道吗? 这是一个理智的想法? 我想这将需要一个定制的服务器端的一块,但即便如此,我预计很多人会写一个,但我找不到任何; 或者是这种情况下,有太多的选项,我应该写我自己的节点/快速/ mongo服务器? 还是说,AJAX组件将完成所有繁重的工作,我只需要使用它呢? 困惑的安迪

远程nodejs服务器部署永远

我试图通过post-commit钩子在远程机器上部署节点js服务器,该钩子将在实际部署的远程机器上调用脚本。 我面对的问题是,如果我在机器上运行远程脚本工作正常,但是当我尝试通过SSH命令执行相同的脚本服务器不启动。 这是我的后提交钩子看起来像: #!/bin/bash #Connect to AWS machine and run deploy script ssh -i ~/Documents/aa-kp-inst1.pem ubuntu@<remote-ip> "sh /home/app/deploy.sh" #Done exit 0 非常简单 这就是deploy.sh的样子: #!/bin/bash #Navigate to server directory cd /home/app/personal_website/server #Stop currently running server(s) forever stop -s 0 >> forever.log #Pull latest code unset GIT_DIR git -C /home/app/personal_website/server pull –quiet #Restart server forever start -a […]

Node.js / Express项目结构

所以我已经有严格的MVC编程背景(Laravel,CodeIgniter,Django等),越来越多的我在Node.js中构build更大的项目,但是我很难找出构build我的可靠方法有意义的项目… 我已经做了一些研究,我喜欢J. Cole Morrison在这里做的方式,但它使得非常胖的路线文件。 结构是类似的 应用 -路由器 -index.js(你的主要path定义,导入个人路由文件) –routes 这是很好的和可读的,但你所有的逻辑是填充在路线文件夹,只是没有意义(或做?)。 我想我会期望更多的东西可以处理你的想法。 其他人是否有想法或结构他们使用或者这是一个好方法去?

是否可以在Node / Express 4.0中声明全局variables?

我有多个路由,需要访问数据库,为开发我使用本地数据库,显然生产我使用托pipe数据库 唯一的问题是我每次去推释放,我必须通过每个path手动更改数据库链接 例如 var mongodb = require('mongojs').connect('urlhere', ['Collection']); 如果我可以在app.js声明一个variables就好了 app.set('mongoDBAddress', 'urlhere'); 然后在每个文件中做类似于var mongodb = require('mongojs').connect(app.get('mongoDBAddress'), ['Collection']); 有谁知道这是否可以实现我已经搞了大约一个小时的谷歌search,试图包括不同的东西,但我没有运气。 谢谢。

phonegap npm安装错误

我正在安装电话差距。 在电话差距网站上显示的命令和说明。 我安装了nodejs并执行了这些命令。 但是导致错误。 在Windows 8上安装PhoneGap时,我尝试了Node.js NPM错误 你可以一步一步的指导吗? 我已经下载phonegap.zip我在哪里放置? C:\Program Files\nodejs>npm install -g phonegap npm ERR! not found: git npm ERR! npm ERR! Failed using git. npm ERR! This is most likely not a problem with npm itself. npm ERR! Please check if you have git installed and in your PATH. npm ERR! System Windows_NT […]

用nodejs读取许多文件的最佳方法是什么?

我有一大堆的文件path。 我从一个stream式的glob模块https://github.com/wearefractal/glob-stream获取这个path列表 我正在将这个streampipe道传输到另一个为每个path创buildfileReadStreamsstream,并迅速触及一些限制。 我得到: warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit 还有Error: EMFILE, open 我已经试过碰到maxListeners但我有9000文件,这将创buildstream,我担心会吃的内存数量是不恒定的,将增长。 我可以安全地删除这里的限制吗? 我应该做同步吗? 或者我应该迭代的path和顺序读取文件? 那么还不能用for循环一次执行所有的读操作吗?