小编Luk*_*cki的帖子

如何在NodeJS中设置MongoDB进行集成测试?

我正在为使用MongoDB编写的NodeJS中的应用程序编写集成测试.

在CI服务器上,我希望有一些嵌入式MongoDB,以实现更快的性能和更轻松的控制.目前我在其他服务器上安装了MongoDB,但测试速度很慢.在每次测试之前,我需要删除所有集合.我使用猫鼬作为ORM.

到目前为止,我只发现了嵌入式MongoDB for Java.

integration-testing embedded-database mongoose mongodb node.js

7
推荐指数
2
解决办法
2065
查看次数

NodeJS中的内存泄漏和关闭问题

当我们开始测试我们的NodeJS项目时,我们注意到了巨大的内存消耗.它是由我们项目中的内存泄漏引起的.所以我们开始寻找可能导致内存泄漏的所有原因.stackoverflow上有一些关于这个问题的答案,但是没有任何关于什么是内存泄漏和什么不是内存泄漏的简明文档.

我的问题:

  • 是否有关于V8 GC的文档及其工作原理(详情)?
  • 如何释放回调以便GC可以收集它们?
  • V8 GC是否收集了未使用但下面有功能闭包的变量?例:

    var serviceChannel = require('./channel');
    var dataRegistration = require('../data/registration');
    
    function registerOnChannel(userID, channelID, callsuccess, callerror) {
    
        serviceChannel.findChannel(channelID, function (channel) {
            if (!channel) {
                callerror("Channel doesn' exists");
                return;
            }
            dataRegistration.registerOnChannel(userID, channelID, function (registration) {
                if (!registration) {
                    callerror("Registration doesn' exists");
                    return;
                }
                callsuccess("Registration successful");
            }, function (error) {
                callerror("Error on registration");
            })
        }, function (error) {
            callerror("Error on finding channel");
        })
    }
    
    Run Code Online (Sandbox Code Playgroud)

因此,只要registerOnChanel处于活动状态,serviceChannel和dataRegistration就会保留在内存中.但是GC会删除变量通道(任何功能都不使用它)?

closures memory-leaks node.js

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