Articles of 响应

自定义响应消息,validation节点js中的所有必需参数

我是NodeJS和Express的新手,我想validationAPI参数。 现在我通过以下方式validation参数: if(!req.body.parametername) return res.send({"message": "Please provide parametername"}); if(!req.body.parametername) return res.send({"message": "parametername can not be blank"}); 但是我想让回复如下所示: { "username": [ "This field is required." ], "password": [ "This field can not be blank." ] } 这是我想要的,如果参数无效或没有提供的响应。

meteor模板没有使用点击事件进行更新

我试图做一个使用meteor会议(坚持视图的用户是)的反应式菜单..但它不工作,Session.get('currentView')得到改变(在Chrome控制台的teste),但页面不要再次渲染。 html的 <div class="col-1-1 menu" style="height: 42px;"> <ul> <li><a class="dashButton" href="#"># Dashboard</a></li> <li><a class="myJobsButton"href="#">Jobs</a></li> <li><a class="helpPageButton"href="#">Help</a></li> </ul> <br style="clear:left"/> </div> {{#if currentViewIs "dashboard"}} {{> dashboard}} {{else}} {{#if currentViewIs "myJobs"}} {{> myJobs}} {{else}} {{#if currentViewIs "helpPage"}} {{> helpPage}} {{else}} {{> dashboard}} {{/if}} {{/if}} {{/if}} client.js Template.userPage.currentViewIs = function (view) { if( Session.get('currentView') == view) return true; […]

我应该streamhtml文件,而不是只渲染?

我正在试验node.js / express.js,并认为pipe道html文件的请求,而不是只是渲染。 我希望能够获得更好的性能,并且html文件将会首次加载更快。 //instead of res.render('form',{title:'Login',userField:'Username',passField:'Password',photo: photo}); //I do var path = 'views/form.ejs'; var stream = fs.createReadStream(path); stream.pipe(res); This is actually about 10ms faster, even with a small file (385 bytes). I am developing so my files are still really 小。 我发现唯一的答案是,我不能在响应像userFieldembeddedEJS数据:'用户名' 1-我在这种情况下使用pipe道吗? 2-有没有其他的优点和缺点? 3-我是否过度使用它? 我应该只使用渲染,因为差异很小,或与缓慢连接 大的HTML,pipe道实际上节省了一天? 谢谢

Node.js混淆了每个循环的输出

我想知道如果有人能帮助我理解以下行为。 如果我在node.js服务器上有一个app.js文件,如下所示: var http = require('http'); var _ = require('underscore'); http.createServer(function(request, response) { var x = ''; _.each([1, 2, 3], function(num){ x +=" underscore.js says " + num; }); response.writeHead(200, { 'Content-Type': 'text/html' }) response.end(x); }).listen(3000, null); 然后,每当我请求页面,我看到文字“underscore.js说x”3次。 我期望这样做,因为循环中有3个数字,每个请求都会重置x。 但是,如果我有以下(x移到createServer的callback之外): var http = require('http'); var _ = require('underscore'); var x = ''; // Note x […]

Node.Js / Express – 简单的中间件来输出响应的前几个字符

对于日志logging/debugging,我想在发送给浏览器之前输出响应的前一百个字符。 有什么简单的我可以做中间件和响应对象来做到这一点? 理想情况是这样的: app.use(function(req, res, next) { console.log('Response snippet: '+((res.body || '').substr(0,100))); next(); }); 除了回应没有身体,我不能完全弄清楚现在的身体被送回的位置。 更新: 彼得的答案工作,我想我会把我的中间件代码在这里保存未来的观众点击: App.use(function(req, res, next) { var end = res.end; res.end = function(chunk, encoding){ res.end = end; if (chunk) { console.log(chunk); } res.end(chunk, encoding); }; next(); });

FFMPEG挂起整个nodejs进程

我想要做的是使用ffmpeg制作video的缩略图。 video数据通过HTTP请求接收,然后通过pipe道传输到ffmpeg。 问题是,一旦ffmpegsubprocess退出,我根本无法发送回应。 这里是代码: var http = require('http'), sys = require('sys'), child = require('child_process') http.createServer(function (req, res) { im = child.spawn('ffmpeg',['-i','-','-vcodec','mjpeg','-ss','00:00:03','-vframes','1','-s','100×80','./thumb/thumbnail.jpg']); im.on('exit', function (code, signal) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('{"success":true}\n'); }); req.connection.pipe(im.stdin); }).listen(5678, "127.0.0.1"); 问题是,调用: res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('{"success":true}\n'); 什么都不做,客户从来没有收到回应。

Express / Node.js:渲染自定义JavaScript作为响应

在我的应用程序中,我需要提供一个API(类似Google Maps JavaScript API),通过这个API我可以发送一些自定义的javascript(带有一些会话和请求相关信息)作为响应。 然后用JavaScript在UI上绘制一些graphics。 我使用Express作为我的模板引擎。 我目前使用的代码是: app.use('/graph',function(req, res){ //send out graph data var var_name = req.session.var_name //fetch something from session var graphData = fetchGraphData(req.query.graph); //function that fetches graph data res.contentType("text/javascript"); res.render(__dirname + '/views/graph.jade', { title: "Title", queryStr: JSON.stringify({var_name: var_name, graphData: graphData }) }); }); 玉档: | some_var_name = { | initGraph : function(divId){ | […]

节点js,使用connect-memcached时不返回任何响应

您好我正在使用compoundjs和connect-memcached。 以下是我的envirionment.js文件中的内容: module.exports = function (compound) { var express = require('express'); var MemcachedStore = require('connect-memcached')(express); var app = compound.app; require('./mongoose').init(compound); app.configure(function(){ app.use(compound.assetsCompiler.init()); app.use(express.static(app.root + '/public', { maxAge: 86400000 })); app.set('view engine', 'ejs'); app.set('view options', { complexNames: true }); app.set('jsDirectory', '/javascripts/'); app.set('cssDirectory', '/stylesheets/'); app.set('cssEngine', 'stylus'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.favicon()); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.session({secret: 'AuthenticationSecret', store: new MemcachedStore})); app.use(app.router); […]

node-express errror:express deprecated res.send(status):use res.sendStatus(status)instead

我想通过response.send()发送一个整数,但我不断收到此错误 express deprecated res.send(status): Use res.sendStatus(status) instead 我不发送状态,我的代码是 app.get('/runSyncTest' , function(request, response){ var nodes = request.query.nodes; var edges = request.query.edges; if (edges == "" ){ edges = [] } userStory.userStory(nodes,edges); connection.query('SELECT MAX(id) as id FROM report ', function(err,results, fields) { idTest = results[0].id response.send (idTest) }); }); 有什么build议么?

ExpressJS 3.0如何将res.locals传递给玉视图?

我想在用户login失败后显示一个Flash消息,但是我不能让variables显示在我的Jade视图中。 我有一些片断,我知道我必须在我的app.configure()中使用它: app.use (req, res, next) -> res.locals.session = req.session 在用户input错误的密码后,我将设置闪存信息: exports.postSession = (req, res) -> users = require '../DB/users' users.authenticate(req.body.login, req.body.password, (user) -> if(user) req.session.user = user res.redirect(req.body.redirect || '/') else req.session.flash = 'Authentication Failure!' res.render('sessions/new', {title:'New', redirect: req.body.redirect }) ) 我不知道如何访问我的Jade文件中的res.locals.session 。 我怀疑我正在设置一切正确的。 这个问题很像这个:将Express.js 2迁移到3,特别是app.dynamicHelpers()到app.locals.use? 但我仍然无法工作。 如果有人能给我看一个在res.local中设置值并在视图中访问它们的简单例子,我们将非常感激。 PS我知道连接闪光灯,但我需要了解如何在视图中提供的东西。 这是我的应用程序: app.configure(() -> app.set('views', __dirname […]