Tag: expression

我缺less关于快速会话和cookie的信息?

express和express-session和express-sql-session已经相当的了。 我已经得到它在用户login时在会话的数据库中创build一行。这是我如何设置它: //login route handler this.bcrypt.compare(password, row.hashed, function(err, passwordsMatch) { if (passwordsMatch === true) { console.log("user now logged in"); req.session.user = row; req.session.success = 'User successfully logged in'; res.send(row); res.end(); } }); Hunky dory! 我可以跳进我的会话表,并从数据库中获取行。 这里是: {"cookie":{"originalMaxAge":600000,"expires":"2015-08-24T23:16:20.079Z","httpOnly":false,"path":"/"}, "user":{"userID":24,"userName":"g","email":"g","joinDate":"2015-08-24T07:15:33.000Z"},"success":"User successfully logged in"} 请注意,您可以看到自定义使用对象已设置。 但是,在下一个获取某些数据的请求中,我检查会话上的user对象: // some other route called after login. if (!req.session.user) { console.log('user not […]

在Express.js中POST数据JSONvalidation

我正在使用Node.js和Express.js编写一个应用程序。 该应用程序有一个(小)REST API,然后是一个Web前端。 我使用MongoDb。 对于API,我倾向于POST数据到某个端点,然后进行处理或者其他操作,并将其转储到数据库中。 但是,我有一些数据库架构,我想强制执行。 什么是我的选项/最佳做法,强制执行我的POST数据的特定结构,所以我知道某些领域是目前和特定types。 如果这可以在中间件级别完成,那将是很好的,但这不是必需的。 人们通常为validation/模式执行做什么?

如何识别下面的代码模式

我有一个js承诺的模式,我想确定几个关键字 例如,如果我把这样的代码: var deferred = Q.defer(); 而在文件中,我也有以下各自的价值 deferred.reject(err); deferred.resolve(); return deferred.promise; 完整的代码 例1 function writeError(errMessage) { var deferred = Q.defer(); fs.writeFile("errors.log", errMessage, function (err) { if (err) { deferred.reject(err); } else { deferred.resolve(); } }); return deferred.promise; } 我想如果我把大的代码文件(作为string) ,发现这个文件包含模式 另一个例子 var d = Q.defer(); / *或$ q.defer * / 而在文件中,你也有以下各自的价值 d.resolve(val); d.reject(err); return d.promise; […]

JavaScript正则expression式迭代器来提取组

假设我们有以下文字:“1 a,2 b,3 c,4 d”和下面的expression式:/ \ d(\ w)/ g 我们要做的就是提取正则expression式所表示的a,b,c,d。 不幸的是,“1 a,2 b,3 c,4 d”.match(/ \ d(\ w)/ g)将会产生一个数组:1 a,2 b,3 c,4 d和RegExp。来自上一场比赛的组,即RegExp。$ 1 =='d'。 我怎么能遍历这个正则expression式,以便我可以提取组以及…我正在寻找一个解决scheme,也是有效的内存,即某种迭代器对象 编辑:它需要是通用的。 我只是在这里提供一个简单的例子。 一个解决scheme是循环数组,并重新申请每个项目的正则expression式没有全局标志,但我觉得这个解决scheme有点愚蠢,虽然它似乎是唯一的方法来做到这一点。

如何使用Express处理Node.js中的错误

我正在与一个项目的合作伙伴合作。 他在Node.js + Express中写了很多代码,但是我们遇到了这个架构的问题。 为了弥补这一点,我的主要任务是找出构buildNode.js + Express应用程序的最佳方法。 我碰到两种情况,处理错误,我想要一些build议。 首先,我如何捕获顶级exception? 我想要的最后一件事是一个bug完全杀死节点进程。 面对任何错误,我想继续为用户服务。 其次,一些错误通过callback传递(我们使用caolan / async )。 作为每个路由处理程序的一部分,我们要呈现一个视图(GET),redirect到另一个path(POST),并且我们要用一个自定义错误消息redirect到一个错误屏幕。 我怎样才能确保在一个地方捕捉这个逻辑?

有没有办法用restify来logging控制台中的每个请求?

我正在使用restify来构build一个API,而我习惯于express 。 有没有办法让restifylogging每一个请求,像app.use(express.logger('dev')) ?

Chrome✗和Firefox中的ES6 / Unicode正则expression式中的逻辑或序列✓

考虑下面的Unicode重正则expression式(表情符号代表非ASCII和额外的BMP字符): '🍤🍦🍋🍋🍦🍤'.match(/🍤|🍦|🍋/ug) Firefox返回[ "🍤", "🍦", "🍋", "🍋", "🍦", "🍤" ] 🤗。 Chrome 52.0.2743.116和节点6.4.0都返回null ! 如果我把string放在一个variables中,并且执行str.match(…) ,也不关心我是否通过new RegExp('🍤|🍦|🍋', 'gu')一个RegExp对象。 (Chrome可以用ORing 两个序列来确定: '🍤🍦🍋🍋🍦🍤'.match(/🍤|🍦/ug)可以,非Unicode也可以: 'aakkzzkkaa'.match(/aa|kk|zz/ug)作品。) 难道我做错了什么? 这是一个Chrome的错误? ECMAScript兼容性表格说,我应该与Unicode正则expression式确定。 (PS:在这个例子中使用的三个表情符号就是stand-ins,在我的应用程序中,它们是任意的但是不同的string,但是我想知道'🍤🍦🍋🍋🍦🍤'.match(/[🍤🍦🍋]/ug)在Chrome中工作是相关的?)

Node.jsparsingstring中的数字

给定一个string如: Recipient: test@test.com Action: failed Status: 5.0.0 (permanent failure) Diagnostic: No 只有在状态之后,我如何才能得到“5.0.0”和“永久失败”? ? 谢谢

Node.js和Express会话处理 – 后退button问题

我的Express应用程序中有一个限制区域“/ dashboard”。 我使用一个非常小的函数来限制访问: app.get('/dashboard', loadUser, function(req, res){ res.render('dashboard', { username: req.session.username }); }); function loadUser(req, res, next){ if (req.session.auth) { next(); } else { res.redirect('/login'); } }; 问题是,当我通过调用注销用户… app.get('/logout', function(req, res){ if (req.session) { req.session.auth = null; res.clearCookie('auth'); req.session.destroy(function() {}); } res.redirect('/login'); }); …会话被杀害, 但当我在浏览器中点击“后退”button时,浏览器的caching中就有了受限制的页面。 这意味着“/仪表板”上没有GET,也没有用户loginvalidation。 我尝试在元(Jade模板)中使用nocaching但它仍然无法正常工作。 meta(http-equiv='Cache-Control', content='no-store, no-cache, must-revalidate') meta(http-equiv='Pragma', content='no-cache') meta(http-equiv='Expires', content='-1') […]

从string中删除所有ANSI颜色/样式

我使用一个将ANSI颜色/样式添加到string的库。 例如: > "Hello World".rgb(255, 255, 255) '\u001b[38;5;231mHello World\u001b[0m' > "Hello World".rgb(255, 255, 255).bold() '\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m' 当我做: console.log('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m') 将会输出一个"Hello World"白色和粗体的信息。 有一个string像'\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m'这些元素如何去掉? foo('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m') //=> "Hello World" 也许一个好的正则expression式? 还是有内置function? 我在想的工作是创buildsubprocess: require("child_process") .exec("node -pe \"console.error('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m')\"" , function (err, stderr, stdout) { console.log(stdout); }); 但是输出是一样的