Tag: 表示

我可以在req.get中发送http请求吗?

好吧,可能是一个奇怪的问题,但通常当你有这样的代码 app.get('/', function(request, response) { response.render('pages/index'); }); 您使用mongoDB并获取数据库中的相关数据以返回,但是如果我想对其他服务进行api调用以获取数据呢? 我正在使用请求库( https://github.com/request/request#streaming ) 到目前为止我的代码看起来像这样 request = require('request'); …. …. app.get( '/examplePage', function( request, response ) { request("http://www.google.com", function(error, response, body) { console.log(body); }); }); 但我得到一个“TypeError:对象不是一个函数”,这是奇怪的,因为我只是复制和粘贴作为一个例子提供的代码在他们的github页面。 所以我只是改变了请求request.get(因为默认是一个GET,但我只是显式使用get方法),但我没有得到回应,或谷歌的HTML不返回。 所以基本上我甚至不确定我是否允许在app.get方法中使用请求方法调用,我假设这可能是问题?

Node.js:如何以正确的方式处理promise

我有一个Node.js(express.js) – 服务器,我提供了一个简单的authenticationapi。 在我的一条路线中,我在返回“资源”之前改变了很多子步骤。 我使用蓝鸟的承诺。 router.post('/register', function(req, res, next) { // ——- 1. check if already existing var p = store.checkIfExisting(req, res) //–>mongoose .find(). Returns promise .then(function(isExisting) { if (isExisting) { console.log("try to cancel"); p.cancel(); } // ——- 2. Facebook validation return validateFacebookSignedRequest(req.body.fbsrCookie); //True/False }) .then(function(fbIsValid) { // ——- 3. create Users return store.saveUser(req, res); […]

Node Express Middleware从一次调用中输出两次console.log()?

只是关于一些Node + Express中间件的一个简单问题,它将在我的节点cmd提示符中输出两次对console.log的调用两次。 这只是没有意义,想知道是否有人可以解释为什么这是为我发生。 server.js var express = require('express'); var app = express(); //Outputs in my console twice?! app.use('/', function(req, res, next) { console.log('Request Logged by Node+Express Server Middleware @ ' + Date()); next(); }); app.get('*', function(req, res) { res.send('Hey world.'); }); app.listen(1337);

没有find快速路线

我对express的概念相当陌生。 无论如何,我正在尝试为某个“计划”构build子路由并做相应的操作。 我从mypage.com/someroute/123321312开始 router.get('/:planId', function(req, res, next) { //a form is rendered and sent in responce to client }); 作品! 填写完呈现的表格后: <form id="bioData" method="post" action="confirm"> 我提交表单,它会将我redirect到mypage.com/someroute/123321312/confirm 失败! 404! 正如所期望的那样,URL是尾随/confirm路线 我想通过在服务器端处理路由来响应触发的请求,如下所示: router.get('/:planId/confirm', function(req, res, next) { //a different page should be rendered }); 为什么反应没有将请求映射到这条路线? 这一定是明显的 – 如果你需要更多的代码,只需要问! 🙂

Node Express Jade – checkbox布尔值

我正在使用Node + Express + Jade来渲染一些网页。 在表单上有2个checkbox。 当通过POST提交表单时,如果checkbox被选中,我得到req.body.checkbox1 -> 'on' ,如果没有选中,我得到req.body.checkbox1 -> undefined 有可能获取checkbox的值为true或false ? 这是我的服务器端testing代码 var bodyParser = require('body-parser'); var express = require('express'); var app = express(); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static(__dirname + '/webroot')); app.set('views', __dirname + '/view'); app.set('view engine', 'jade'); app.listen(3001); app.get('/', function (req, res) { res.render('test'); }); app.post('/config', function (req, res) { console.log(req.body.t); console.log(req.body.f); res.redirect('/'); […]

根据stringtesting子string的数组

我有一个bot名称的数组。 当一个用户或机器人访问我的网站,我得到的user-agent并希望testing是否存在其中的一个值在我的数组中。 var bots = [ "twitterbot", "linkedinbot", "facebookexternalhit", "pinterest", "dotbot", "rogerbot", "googlebot", "baiduspider", "yahoo! slurp", "bot", "spider", "simplepie", "yahooseeker", "embedly", "quora link preview", "outbrain", "vkshare", "monit", "pingability", "monitoring", "winhttprequest", "apache-httpclient", "getprismatic.com", "python-requests", "twurly", "yandex", "browserproxy", "webmeup-crawler", "qwantify" ]; var isBot = function(agent){ return bots.some(function(bot){ return bot.test(agent); }); } app.use(function(req, res, next){ var test = […]

呈现svg文件,并使用快递服务

我想知道如何使用Express呈现和提供svg文件。 现在,我可以将svg作为原始XML文件。 这是我在做什么: 路线 router.get('/status', function (req, res, next) { res.setHeader('Content-Type', 'image/svg+xml'); res.sendFile(path.join(__dirname, '../views/status.svg')); }); SVG <svg width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke: black;stroke-width:5;opacity:0.5" /> </svg> 当我点击这条path时,svg文件的原始XML将被提供给浏览器。 我怎样才能把它作为一个SVG图像先渲染,然后提供它?

Node.js要求按预期工作

我用节点和节点快递生成器来生成节点快递代码。 一切工作正常,直到我不得不部署到服务器。 默认情况下有几个文件: .bin/www (我有var app = require('../app'); ) app.js 我的主机要求我有我的起点server.js的名称。 移动www并将其重命名为server.js 现在有一个结构: server.js app.js 现在我遇到问题,我已经要求var app = require('../app'); 我试图改变它 var app = require('app'); var app = require('app.js'); var app = require('./app'); var app = require('app/app'); –> with move of app to different folder 但没有成功。 我究竟做错了什么?

node.js和express – 使用多个中间件与callback – 最佳实践是什么?

我有一个关于构build一个HTTP服务的问题,需要在运行实际function之前运行一些预先检查(如果其中一个预检不通过,不运行该function)。 例如,首先检查请求是否被授权,然后检查权限,并且只有在两个通行证都运行实际的function。 我可以想出两种方法来做到这一点,无论是作为中间件,还是使用callback书写授权和权限。 快递的最佳做法是哪种? 使用中间件看起来更优雅,但是更好吗? 这两种解决scheme有什么优点和缺点? 使用callback将如下所示: router.get( '/myResource',, function(req, res){ autorizationCB(function(err, data){ if (err) { return res.status(401).json({message: err.message}); } permissionsCB(function (err, data) { if (err) { return res.status(403).json({message: err.message}); } // actual resource code… }); }); }); function authorizationCB(callback) { // check authorization … … if (authorized) { return callback(null, data); } else { […]

res.send发送后无法设置标题

你好,我有这个方法下面,我不能确定为什么我得到这个错误 错误:发送后无法设置标题。 ServerResponse.header(/home/kwanso/Projects/myApp/Server/node_modules/express/lib/response.js:718:10)ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:335:11)在ServerResponse.json( /home/kwanso/Projects/myApp/Server/app.js:92:11 at Layer.handle [as /home/kwanso/Projects/myApp/Server/node_modules/express/lib/response.js:246:10) (/ home / kwanso / Projects / myApp / Server / node_modules / express / lib / handle_request](/home/kwanso/Projects/myApp/Server/node_modules/express/lib/router/layer.js:95:5) (/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/middleware/authenticate.js:243:13)在/ home / kwanso / Projects / myApp /路由器/ route.js:131:13)在Authenticator.transformAuthInfo(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:421:14)上的服务器/ node_modules / passport / lib / middleware / authenticate.js:250:15 /home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:443:5)在/ home / kwanso / Projects / myApp / Se […]