Tag: expression

生成的NodeJS Express应用程序不“听”?

在运行express ,生成的app.js如下所示:(在这篇文章的date) var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); […]

Expressjs路线与Angular路线问题直接加载url

我有expressjsangular工作,一切大部分工作,但是我遇到与expression和angular度的路线冲突 app.js app.get('/',routes.index); app.get('/about/:name', aboutRoutes.partials); app.get('/partials/:name', routes.partials); //authentication //app.get('/app', ensureAuthenticated ,appRoutes.app); app.get('/app',appRoutes.app); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } app.get('/[az]{0,100}',routes.index) 路线 var homeContent = require('../content-config/home.json'); exports.index = function(req, res) { res.render('template', { headerTitle: homeContent.headerTitle, headerContent: homeContent.headerContent, mainTitle: homeContent.mainTitle, mainContent: homeContent.mainContent, employersTagLine: homeContent.employersTagLine, candidatesTagLine: homeContent.candidatesTagLine, providersTagLine: homeContent.providersTagLine, fundingTagLine: homeContent.fundingTagLine, howItWorksTitle: homeContent.howItWorksTitle, partials: { […]

对这个stream可读的语法有点困惑

我读过stream手册,他们有这样的例子: var Readable = require('stream').Readable; var rs = new Readable; rs.push('beep '); rs.push('boop\n'); rs.push(null); rs.pipe(process.stdout); 它看起来正是我所需要的(将对象推入可读的stream并将其pipe道化为可写)。 所以这就是我想出来的 var Readable = require('stream').Readable; var rs = new Readable; app.get('/:foo', function(req, res) { oboe(fs.createReadStream("/file")) .node( "{}", function(data) { rs.push(data) }) rs.pipe(res); 我正在使用oboe来听取对象的fsStream并修改它们。 目前我推新find的对象到一个数组,然后在“完成”stream事件我会告诉res.json新创build的数组。 这个内存太重了,我想知道是否可以在find并修改对象的时候清空stream,把它推到可读的位置,当可读的stream获取数据时,它会将其stream出去res,但仍然保持一个对象。 不过,我收到这个错误 Error: not implemented at Readable._read 这是否意味着stream手册已过时?

上传文件与AngularJS和Express.js

我正在尝试使用AngularJS和Node.js(使用Express.js)来上传文件。 我正在使用danialfarid /angular度file upload 。 在我看来(我用玉)我有 label Upload avatar input(type="file" ng-file-select='uploadAvatar($files)' accept="image/png, image/jpeg") span(ng-show='uploadInProgress') Upload progress: {{ uploadProgress }} img(ng-src='uploadedAvatar' ng-if='uploadedAvatar') 这里是我的控制器中的uploadAvatar函数(我在前端使用CoffeeScript, 这里是编译的javascript版本): $scope.uploadAvatar = (image) -> if angular.isArray image image = image[0] if image.type isnt 'image/png' and image.type isnt 'image/jpeg' alert('Only PNG and JPEG are supported') return $scope.uploadInProgress = true $scope.uploadProgress = 0 $scope.upload […]

Express res.render不能使用Angular路由

我有一个基于node.js,express,angular(与路由)和mongo的web应用程序。 身份validation通过Passport.js进行处理。 我的angular度视图通过http请求与服务器交互。 说我发送types的请求: $http.get('/api/getMyData').success(function(data) {})… 在服务器上我有: app.get('/api/getMyData',function(req, res) { if(!req.user){ // if the session expired res.render('login.ejs',{message:'Session expired. Please login again.'}); 有了这个代码,我想用户被redirect到login页面,如果会话已经过期。 现在,这不起作用,我没有redirectlogin。 即使我有console.log(req.user)产生undefined和req.user==undefined给予true , res.render中的res.render不工作。 如果我尝试res.redirect('login'); 我得到一个404错误,说/api/login不存在。 我真的很迷茫,任何帮助将不胜感激。

续集dynamic查询参数

我从我的前端MVC框架发送查询参数为req.query.p格式的req.query.p ,重点在于这可能是一个dynamic的键和值,例如: req.query.p = {nombre : 'juan'} 要么 req.query.p = {pais : 'chile'} 所以我需要钥匙和价值把它们放在where语句中,就像这样 exports.select = function(req, res){ console.log('=> GET | Obtener peliculas'.bold.get); db.Pelicula .findAndCountAll({ limit : req.query.limit, offset : req.query.offset, where : req.query.p ? [req.query.p.KEY + " = ?", req.query.p.VAL] : null }) .success(function(resp){ console.log(JSON.stringify(resp.rows, null, 4).bold.get); res.json({peliculas : resp.rows, meta : { total […]

expression/节点,理解渲染模板和asynchronous模型

我有一些麻烦,理解我的应用程序应该如何正确运行加载JSON和渲染模板方面。 想象一下,有路线仪表板,我想从外部API收集一些数据。 我已经创build了自定义文件(tools.js),我有一个从源代码( https.request(options, function(res)) {…} )中获取数据的https.request(options, function(res)) {…} ,所以基本上这个过程如下所示: 我在浏览器中打开我的路线(tools.js开始从外部API中收集JSON) 模板呈现,并且tools.js调用的结果仍然是未定义的 tools.js刚刚结束加载,在控制台显示正确的数据,但模板已经呈现未定义的结果。 我希望这是有道理的。 我明白,这是一个预期的行为,但是如何在从tools.js获取数据之后“重新呈现”模板?

busboy不发射领域,文件事件

在下面的代码中,只有完成事件调用。 var Busboy = require('connect-busboy'); app.use(Busboy()); app.post('/fileupload', function(req, res) { var fstream; req.pipe(req.busboy); req.busboy.on('error', function(err){ console.log(err); }); req.busboy.on('field', function(fieldname, val, valTruncated, keyTruncated) { console.log("fieldname: " + fieldname); }); req.busboy.on('file', function (fieldname, file, filename) { console.log("filename: " + filename); fstream = fs.createWriteStream(__dirname + '/files/' + filename); file.pipe(fstream); fstream.on('close', function () { res.redirect('back'); console.log("fileupload end"); }); }); […]

Express – 公共目录分为授权/未授权用户

我有一个用express.js编写的应用程序,我试图把这个应用程序分成两部分: 一个用于未经授权的用户(路由仅限于/ – 着陆页,/ login和/ * – error404) 和第二个(路线将是:/ – 着陆页,/应用程序/ * – angular度SPA将自行处理路由) Express也被configuration为从/unauth/public/获取静态文件并且我想为来自授权路由的请求添加第二个静态文件夹 – /auth/public转到/ app / * 我的路由configuration如下所示: var authRoutes = express.Router(); var unauthRoutes = express.Router(); authRoutes.get('/app/*', function(req, res, next) { if(!req.isAuthenticated()) return res.redirect("/login/"); res.send("AUTHORIZED"); }); unauthRoutes.get('/', function(req, res, next) { res.send("LANDING PAGE"); }); unauthRoutes.get('/login/', function(req, res, next) { if(req.isAuthenticated()) return res.redirect("/app/"); […]

我怎样才能使快车做校验和caching?

我知道maxAge伪指令的静态内容: app.use(express.static(__dirname + '/public', { maxAge: 86400000 })); 不过,我想build立一个系统,其中: 浏览器caching任何未更改的资源 浏览器获取已更改的最新版本的资源 我知道这通常是通过校验和来完成的,即: 将所有资源与校验和一起作为URL的一部分 。 旧的URL永远被caching,新的内容意味着新的URL。 我怎样才能expression这个呢?