小编Moh*_*waj的帖子

NodeJS 应用程序的所有请求的 CPU 使用率都达到 100%

我有一个基于 Express 构建的 NodeJS 应用程序。我使用 pm2 来保持应用程序运行。有时,应用程序会挂起,即页面只是继续加载。如果我尝试使用 SSH 连接到服务器,那么它也会挂起并且不会显示任何提示或任何内容。一段时间后(大约 1-2 分钟),应用程序开始正常运行,我还可以在终端中使用 SSH 连接到服务器。

为了查看是否是由于 CPU 使用率激增所致,我将 pm2 进程与 keymetrics.io 连接起来。在这里我注意到,对于每个请求(即使是简单的登录页面),CPU 使用率图表都会达到 100%,然后恢复正常。

它不会挂起应用程序,但我很困惑这是否是正常行为,如果不是,那么这可能是什么原因?从用户的角度来看,该应用程序通常并不慢。

node.js express pm2

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

如何在express、nodejs的所有视图中传递csrf令牌

我有一个使用 ExpressJS 构建的 NodeJS 应用程序。经过安全审查后,我被建议对所有表单和 ajax 提交实施 CSRF。为此,我使用了csurf包。为此,我们需要在每个表单页面中传递 CSRF 令牌,然后将其与表单提交数据一起返回。

首先,我尝试对包含表单的页面单独执行此操作。但后来我意识到我的页眉中有一个搜索表单,它出现在所有页面上。现在,有什么方法可以将 CSRF 令牌传递给我的所有视图,而无需为每个请求显式传递它。这是我用来呈现表单页面的通用代码。我使用 Jade/Pug 进行渲染:

router.get('/createcampaign', checkUserSession, middleWare2, middleware3, function(req, res){
    var pageInfo = {};
    pageInfo.title = 'Create New Campaign';
    pageInfo.projects = req.projects;
    pageInfo.session = req.session;
    pageInfo.bodyid = 'createcampaign';
    pageInfo.project_id = req.flash('project_id');
    pageInfo.bodyclass = 'bluebody';
    pageInfo.account = req.account;
    pageInfo.grammars = req.grammars;
    pageInfo.csrfToken = req.csrfToken; //Here I pass csrfToken to view

    res.render( 'users/createcampaign', pageInfo );
});//createcampaign get route
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要将 csrfToken 与视图上下文对象一起传递。如何全局传递它以便将其传递到所有视图?

另外,在所有页面上发送此 csrfToken 并在需要的地方使用它是否安全?

谢谢。

javascript forms csrf node.js express

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

返回false是否可以通过异步函数传递ESLint一致返回错误?

我正在使用ExpressJS,需要在我的代码上运行和传递ESLint规则.有一个规则"一致 - 返回",这是为这样的代码抛出:

function getUsers( req, res, next ){
  if( req.userIds.length === 0 ){
    return next();
  }

  collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
    if( err ){
      return next();
    }

    req.users = doc;
    return next();
  });//find()
}//getUsers()
Run Code Online (Sandbox Code Playgroud)

现在,此代码给出了"一致返回"错误.似乎有2个可能的更改,删除此错误,我不确定这些是正确的.

function getUsers( req, res, next ){
  if( req.userIds.length === 0 ){
    return next();
  }

  collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
    if( err ){
      return next();
    }

    req.users = doc;
    return next();
  });//find()

  return false; // adding return false passes the ESLint …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js express eslint

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

javascript:使用另一个数组作为过滤器过滤对象数组

假设每个员工都是一个拥有的对象

emp1.age=30
emp1.name="Hang"
emp2.age=40
emp2.name="Dang"
emp3.age=50
emp3.name="Bang"
Run Code Online (Sandbox Code Playgroud)

将其存储在Array中.

var orginialArray=[emp1,emp2,emp3];
Run Code Online (Sandbox Code Playgroud)

我想用另一个字符串数组过滤或拼接数组.

在某个地方,我正在准备一系列名称进行比较,originalArray然后从中删除不匹配的员工originalArray

var removeElements=["Hang","Dang"]
Run Code Online (Sandbox Code Playgroud)

我试过filter但它最终在回调中发送一个字符串,我无法使它工作

function filterItems(query) {
  return orginialArray.filter((el) =>
    el.toLowerCase().indexOf(query.toLowerCase()) > -1
  )
}
console.log(filterItems(removeElements)); //i know this is wrong
Run Code Online (Sandbox Code Playgroud)

目标是过滤原始数组,只有名称不在remove元素数组中的员工.

我也试过拼接,但也没有运气.

javascript arrays filter ecmascript-6

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