Node.js NodeJS查询-用于循环等

Node.js NodeJS查询-用于循环等,node.js,express,Node.js,Express,因此,我对nodejs非常陌生,我有以下函数Common.validRequest,它将在执行以下操作的每个请求上运行: 1) 检查请求api路由的数组,即“/user/login”在数组中查找该路由(Common.apiDoc()),并返回该路由的请求正文应在数组中包含的字段 {name: 'user', required: true, description: 'Users login ID', minLength: 5, maxLength: 7}, {name: 'password',

因此,我对nodejs非常陌生,我有以下函数Common.validRequest,它将在执行以下操作的每个请求上运行:

1) 检查请求api路由的数组,即“/user/login”在数组中查找该路由(Common.apiDoc()),并返回该路由的请求正文应在数组中包含的字段

{name: 'user', required: true, description: 'Users login ID', minLength: 5, maxLength: 7},
{name: 'password', required: true, description: 'Users login password', minLength: 7, maxLength: 100}
2) 对于数组中的每个字段,如果字段上的“required”设置为true,请检查请求正文中是否有该字段,如果没有返回false。(false将返回缺少的字段错误)

所以问题是我做的一切都错了吗

Common.validRequest = function (actionUrl, body) {
    var fields = Common.apiDoc(actionUrl).fields;
    if (!fields) { return true; }   
    for(field in fields) {
        if (fields[field].required) {
            if (!body[fields[field].name]) return false;
        }   
    }   
    return true;
};
// get documentation for specified api action
Common.apiDoc = function (actionUrl) {  
    for(apiAction in Common.apiMethods) {   
        if (Common.apiMethods[apiAction].url == actionUrl) {
            var doc = Common.apiMethods[apiAction];
            return doc;     
        }
    }   
};

在NodeJS中,-loop的“阻塞
”并不一定是坏的

你关心这件事是对的。NodeJS是单线程的,因此任何处理都会阻止其他处理(不使用工作线程、web工作线程等)。但是,如果对特定事件的处理很小,V8编译器和快速处理器将处理得非常快,看起来一切都发生得很快(比如,实时)

但是,您需要在某个时候处理这些数据。您总是可以使用异步处理来分解
for
-循环,并将内容分散到更小的队列中。(关于
async
库的评论是一个很好的开始。)一些传统的观点是“在你不得不优化之前不要进行优化”。首先让事情正常运行,然后看看你是否能让事情变得更好。至少你会有一个基准(时间和成功!)

您拥有的
-循环的
将有少量字段。10元素循环不会杀死你的应用程序。递归计算斐波那契序列,可能:)分解你知道是大的大块,但是你可以花很多时间分解所有的东西,这会延迟你真正拥有一些东西。从表面上看,您的方法正在做您想要做的事情,而且通常每个方法的处理都很小,因此您走上了正确的道路。

尝试签出库函数。但我认为你的代码还可以。