Tag: expression

使用Redis存储的快速会话无法创build会话

我将Redis Express 4.13.1用作会话存储。 app.use(session({ store: new RedisStore, secret: '…', resave: false, saveUninitialized: true })); 它起初工作,但它不起作用(升级后的node.js)。 使用默认存储(内存)工作正常,但使用RedisStore,会话不会被创build。 这是创build会话的代码: router.post('/admin/login', (req, res, next) => { Auth.compare(…, () => { req.session.authorized = true; req.session.userId = id; console.log(req.session); // It prints well. Session is created res.redirect('/admin/main'); }); }); 那一刻,会议改变了: Session { cookie: { path: '/', _expires: null, originalMaxAge: null, […]

我如何创build一个快速路由来处理这样的URL?

app.get('/:service[SOMETHING GOES HERE]', function(req, res, next){ console.log('Service is:', req.params.service); }); 这需要捕捉可能看起来像以下任何一个的URL: /foo /foo/bar /foo/bar/baz callback不涉及foo之后的任何内容,但理想情况下应该能够访问foo作为名为service的参数,而不必手动分析path。 我一直在使用它来testing,但仍然没有发现任何事情。 目前最近的是/:service* 。 编辑:不,它不是一个答案是/:service/*的重复,因为这不包括/foo 。

find最后一个导入语句的索引

我正在使用Node的fs.readFileSync(file)读取fs.readFileSync(file) 。 我需要find最后一次导入语句的索引。 我正在阅读的js文件将如下所示: import React from 'react'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; import { AppLayout } from '../../ui/layouts/AppLayout'; import HomePage from '../../ui/pages/HomePage'; FlowRouter.route('/', { name: 'home', action() { mount(AppLayout, { content: (<HomePage />) }); } }); 所以在这种情况下,我需要find这个导入语句的分号索引: import HomePage from '../../ui/pages/HomePage'; 因为这是最后一个。 我已经看了str.lastIndexOf(searchValue[, fromIndex])但它需要一个string作为searchValue ,在这种情况下,我需要传入一个正则expression式。 似乎我需要一个正则expression式,将相反的方向查找。 我如何匹配并得到最后一次导入的索引?

生产应用程序中的Console.log使用node.js,express和PM2

我使用console.log来debugging我的web应用程序中的一些信息,使用node.js,expressjs和PM2。 所有工作正常:) 我想知道如果我的web应用程序可以在生产中遇到性能问题,如果我使用console.log这个: var myVariable = "Enter in this section of code"; console.log(myVariable); 我已经阅读了有关console.log是同步的,可以影响我的performance…如果这是真实的(我正在使用Express 4 ),我怎样才能删除这些console.log在不同的环境,如生产? 我正在使用PM2( pm2日志命令 )观看日志和pm2刷新清理日志。 谢谢。

如何查找一个string是否包含两个冒号之间的单词,然后返回包含冒号的结果

我正在为Discord编写一个bot,并且希望能够检测到一个string是否包含格式为:smilie:的子string,例如 “我为这个电子游戏感到非常兴奋!:getin:”。 目前,我已经build立的方式,如果用户发布一个单独的消息,即。 我为这个电子游戏感到非常兴奋! :进入: 我的机器人将通过使用这个algorithm附加笑脸 case startsWith(message, ":"): channel.uploadFile("saemotes/"+message+".png"); channel.uploadFile("saemotes/"+message+".gif"); break; 这工作正常,但我希望它更优雅。 所有图像文件的表情名为:smilie_name:.png/.gif取决于它是什么,所以基于此,什么是最好的正则expression式将可能的文件名从string中拉出来? 我假设它会是这样的 case S(message).match(/\b:smilie_name:\b/) !== null: smilie_name_parsed_from_regex = <regex_result>; channel.uploadFile("saemotes/"+<smilie_name_parsed_from_regex>+".png"); channel.uploadFile("saemotes/"+<smilie_name_parsed_from_regex>+".gif"); break; 任何帮助将不胜感激,谢谢!

续集查询多对多关系和访问对象

我有一个案例,我从两个表中查询信息,这个表与“through”表有多对多的关系。 当我做我的查询看来,我正在查询正确的查询不使用“通过”表作为表连接参考和接收与两个表属性输出的logging,但我无法访问连接表的字段属性。 这里是输出的值。 {"fullNameSlug":"Tester Test","email":"test@test.com","firstName":"Tester","lastName":"Test","teams":[{"teamName":"Sales","member":{"memberId":1,"memberEmail":"test@test.com","organizationId":1,"teamId":1,"userId":1,"created_at":"2016-08-21T21:15:19.000Z","updated_at":"2016-08-21T22:00:32.000Z","organization_id":1,"team_id":1,"user_id":1}}]} 这是我的查询,我如何设置数据: .get(function(req, res){ models.User.find({ where: { organizationId: organization.organizationId }, attributes: ['email', 'firstName', 'lastName'], include: [{ model: models.Team, attributes: ['teamName'] }] }); }).then(function(currentUsers){ res.jsonp(currentUsers); console.log(currentUsers); }); 以下是我在视图中尝试访问teamName的方法: {{currentUsers.teams.teamName}} ,它不返回值,但{{currentUsers.email}}返回正确的用户电子邮件。 用户表: module.exports = function(sequelize, DataTypes) { var User = sequelize.define('user', { userId: { type: DataTypes.INTEGER, field:'user_id', autoIncrement: true, primaryKey: true }, firstName: […]

只使用JWT将会话数据保留在后端

我在我的应用程序上使用智威汤逊,我定义我的说法是这样的: const claims = { iss: process.env.DOMAIN, scope: "game", email: user.get("email") }; 我validation这样的令牌: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; console.log(decoded.body.email); // doge@doge.com }); 但是,这迫使我将会话数据添加到claims对象中。 相反,我想将令牌用作会话标识符,并将会话值保留在后端,例如: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; // Since we verified token, read token's session data from backend }); 有没有这样做的例子? PS。 我使用Redis,所以我可以通过Redis设置/获取值,但是我觉得这是不好的做法,因为我会自己开发整个会话。

如何validation/授权环回中的快速路由

我刚刚创build了一个回送应用程序,并为用户authentication/授权扩展了User模型。 我试图检查用户是否当前login或不从我的快速路由,所以我可以redirect用户/login如果用户没有login。 到目前为止,似乎回环只validation/授权暴露的模型方法,如/user/update 。 我无法find任何关于如何获得回送authentication/授权我定义的快速路线。 提前致谢

如何使用路由在nodejs应用程序中发布表单数据?

我尝试使用路由来构build一个简单的节点应用程序,但是由于无法发布,它提供了404networking错误。 有人可以指出我的错误,并纠正它? 首先我创build了一个目录sampProj,然后在其中,我有一个文件 – appl.js和一个目录路由 。 在路由目录内,我有一个目录路由和一个文件main.js。 再次在mainCode目录中,我有3个文件 – main.js,server.js和index.html。 对不起,复杂的方向,我想testing一下,然后开始build设。 我想提一下,这个只有server.js和index.html的代码没有路由,即server.js使用app.post和app.get等,而不是我下面显示的相应的路由器方法。 所以这是应用程序的代码: appl.js: var express = require('express'); var bodyParser = require('body-parser'); var app = module.exports.app = express(); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false})); // parse application/json app.use(bodyParser.json()); // Adding routes var server = require(__dirname + '/routes/main'); var mainCode = require(__dirname + '/routes/mainCode/main.js'); app.use('/Service', server); […]

为什么http-auth不能和express.static中间件一起工作?

我正在尝试使用http-auth模块来设置一个简单的身份validation 。 我已经创build了这个设置,但是不能正常工作。 提示用户/密码的对话框显示出来,但如果closures对话框,应用程序将继续工作,也就是说,validation似乎不起作用。 似乎这是行不通的,因为我试图设置这个http-auth工作在我的静态文件夹www 。 我的app.js是基于这个 。 这是我的设置: 'use strict'; var express = require('express'); var app = express(); var auth = require('http-auth'); app.use(express.static('www')); var basic = auth.basic({ realm: 'SUPER SECRET STUFF' }, function(username, password, callback) { callback(username == 'username' && password == 'password'); }); app.use("/", auth.connect(basic)); app.set('port', (process.env.PORT || 4000)); app.listen(app.get('port'), function() { console.log('Node […]