Articles of expression

如何在nodejs和express中处理exception

在nodejs express来处理exception,检查callback中的err为: if(err!==null){ next(new Error ('Erro Message')); } 而这又会调用express的error handling程序中间件。 app.use(function(err, req, res, next){ if(!err) return next(); console.log('<——-Error Occured —–>'); res.send(500, JSON.stringify(err, ['stack', 'message'])); }); 但是为了调用next(err),我不得不通过所有的层遍历所有callback方法的下一个参考。 我觉得这是一个凌乱的办法。 有没有更好的方法来处理exception,并使用事件或域发送适当的响应。

express.js每个用户的唯一目录

我有一个express.js 应用程序 ,我正在使用干墙来pipe理用户系统。 当用户注册时,我需要为该用户生成一个目录,并且我希望该用户能够将file upload到该目录并通过他或她的帐户查看这些文件。 我不完全确定,但我认为最有可能的目录生成,我将不得不这样做在views / signup / index.js,并且用户只能上传文件到他或她的目录,如果login。 不过,在保存和显示文件方面,我有点卡住了。 我几乎没有使用服务器端代码的经验,所以实现访问文件等操作稍微超出了我的范围。 在此先感谢那些帮助。

重新格式化date正则expression式

我正在编写一个应用程序(Node.js是精确的),我现在有一个datestring格式化在mongoose数据库中: 2013-11-19T00:10:00-08:00 我想通过查找在给定的一天中发生的所有结果来在数据库上运行查询 它需要在所有的date工作,而不仅仅是上面的例子

在nodejs / expressjs中使用RedisStore

我想快速访问会话数据,所以我想我会尝试在configurationexpress时声明一个connect-redis会话存储。 但是,我不明白为什么这不起作用: var express = require('express'); var http = require('http'); var RedisStore = require('connect-redis')(express); var app = express(); app.set('port', process.env.PORT || 3000); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new RedisStore })); //app.use(express.session({ secret: "keyboard cat" })); app.use(app.router); app.get('/', function(req, res){ console.log('/'); req.session.items = [ 'apple', 'orange' ]; res.end('items configured'); }); app.get('/items', function(req, res){ console.log('/items: […]

Passport.js twitter身份validation导致500错误,req.session未定义

我正在尝试使用passport-twitter在Node应用程序中设置会话,这样我就可以保存用户数据,但是从我所知道的情况来看,我无法打开会话支持。 另外,我确保callback函数与Twitter Developers上的应用程序条目匹配。 程序抛出的500错误是: 500 Error: OAuthStrategy requires session support. Did you forget app.use(express.session(…))?** at Strategy.OAuthStrategy.authenticate (/Users/xxxxxxxx/web/Node/on/node_modules/passport-twitter/node_modules/passport-oauth1/lib/strategy.js:120:41) at Strategy.authenticate (/Users/xxxxxxxx/web/Node/on/node_modules/passport-twitter/lib/strategy.js:85:40) …. 当我在120行检查strategy.js时,它说: if (!req.session) { return this.error(new Error('OAuthStrategy requires session support. Did you forget app.use(express.session(…))?')); } 所以,显然req.session是未定义的。 不过,我想我已经做了我需要的一切来获得会议支持工作。 这里是我的主要服务器js文件的大部分: var express = require('express'), app = express(); var http = require('http'), https = require('https'); var mongodb […]

angularJS自动引导和手动引导失败的模块

我的模块定义如下: //controller.js var app; app = angular.module('toDoApp', []); app.controller('toDoCtrl', function($scope) { $scope.appTitle = 'ToDo List App'; $scope.toDoText = ''; }); 我试着用两种方式来引导我的模块,第一个是自动的: <html ng-app ="toDoApp" ng-controller="toDoCtrl"> <script src= "https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js" </script> <script src="controller.js" </script> … </html> 我尝试的第二种方法是手动引导它: <html> <script src= "https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js" </script> <script src="controller.js" </script> <script>angular.bootstrap(document, ['toDoApp']);</script> … </html> 我收到的错误是:[13:40:28.640]错误:无模块:toDoApp @ https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js:18 我试过这个,但是没有解决我的问题。 我也运行在本地服务器上使用node.js(我不认为是问题…) // server.js var […]

如何在nodejs中组织与数据库的交互?

我在我的快速应用程序中有一个这样的结构: 数据库帮手,我用来交互我的玛丽亚分贝 码: var MariaSQL = require('mariasql'); var db = new MariaSQL(); var queries = { getUserByID : 'SELECT * FROM user WHERE id=:id', getUserByUsername : 'SELECT * FROM user WHERE username=:username' }; module.exports = { connect : function(config){ db.connect({ host : config.maria.host, user : config.maria.user, password : config.maria.password, db : config.maria.db }); db.on('connect', function() […]

正则expression式匹配HTML属性的多个匹配项

我想用JavaScript正则expression式匹配多个data-i18n属性。 我试了下面的正则expression式: var regexp = /(data\-i18n="[^"]+")/g; 这在我的脑海里似乎挺直的,但最后却不起作用。 如果您尝试匹配以下HTML标记: <a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a> 像这样做一个exec: /(data\-i18n="[^"]+")/g.exec('<a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a>') 会引起如下问题: 有两个匹配,但他们实际上是重复的匹配。 结果是: [ 'data-i18n="first match"', 'data-i18n="first match"', index: 20, input: '<a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a>' ] 任何想法如何有多个匹配我的属性? 提前致谢 !

用另一个javascript文件nodejs发送和获取socket.io的数据并expression

比方说,我有一个JavaScript文件需要与其他JavaScript文件进行通信。 所以我可以在不同的JavaScript文件中使用这个数据。 在这种情况下,我有一个game_server.js 。 在gameserver.js我有两个variables,我想在gamecore.js var host // host of the game var client // client that had joined the game 我想将它们发送到app.js中的socket.io,然后在game_core.js使用这个variables。 所以我可以有关于主机和客户端的数据。 在游戏类中,我想要这样的东西 game_core.prototype.getPlayerInformation = function(data) { this.host = data.host this.client = data.client } 从服务器端获取信息到客户端,最好的方法是通过socket.io,但我真的不知道如何 另外在game_server脚本中还有一个游戏实例 game_server.createGame = function(player){ //Create a new game instance var thegame = { id : UUID(), //generate a new […]

JavaScript正则expression式匹配只返回最后一场比赛

我有一个小的节点应用程序,需要一些input,应用正则expression式来提取一些信息,并应返回一个匹配数组。 所有这一切都很简单,但我所看到的行为是不可预料的。 我的理解是,如果我有多条线匹配这个正则expression式的input,那么每一行将是匹配返回数组中的一个元素。 不幸的是,它看起来像数组只包含最后一行的匹配组。 有没有一种方法来重写这个,而不是迭代通过input两次,以便我可以用每行匹配的数据填充嵌套数组? 将比赛组作为元素返回是非常好的,但是我需要为每一行做这个。 最终目标是将所有这些转换为下游应用程序的格式化JSON。 谢谢参观… 现在的代码 也可以在云9 IDE中进行实验。 var util = require('util'); var re = /(processed)(.*?)\((.*?)\)(.*?)([0-9]\.[0-9]+[0-9])/g; var data; var returnData = []; var Parser = function(input) { util.log("Instantiating Parser"); this.data = input; }; Parser.prototype.parse = function(callback) { util.log("In the parser"); this.returnData = re.exec(this.data); callback(this.returnData); } exports.Parser = Parser; 和一个testing文件: var Parser = […]