Tag: 表示

Express:从另一个中间件调用中间件

我是新来Express 4 ,我想知道如何实现这件事情的东西:我使用jwt来validation我的API的消费者,做到这一点,我有一个非常简单的中间件来检查jwt令牌的有效性: var requireValidToken = function(req, res, next) { var token = req.body.token || req.query.token || req.headers['x-access-token']; if (token) { try { var decoded = jwt.verify(token, req.app.get('superSecret')); } catch(err) { return res.json({ success: false, message: 'Failed to authenticate token.' }); } req.user = decoded.user; next(); } else { return res.status(403).send({ success: false, message: 'No […]

S3 putObjectcallback没有返回期望的对象

我想上传我的图片到S3后,我想获得文件的链接(或文件名也是好的)。 我上传使用下面的代码,它的工作。 s3Bucket.putObject(data, function(err, data){ if (err) { console.log(err); res.send({result:0}); } else { res.send({result:1}); console.log(data) } }); 但在callback数据中,它只有1个属性,etag。 在文档中明确指出它有其他的对象,那么如何获得上传文件的path呢?

Node.js – 每个用户的子域名+允许自定义域名

使用Node.js / Express我有一个REST API与多个同构/通用应用程序使用这个API。 我希望允许用户拥有自己的子域名,并在注册时dynamic发生。 从我所研究的最好的方式来做到这一点是指向同构/通用应用程序服务器的通配符logging,并有一些逻辑解释请求查找子域,并提供适当的页面。 这我假设需要坐在应用程序的前面,并发生每个请求到服务器。 这是解决这个问题的最好方法吗? 有其他的方法吗? 是否会有可扩展性的潜在问题? 然后我想让用户有一个自定义的域名。 Tumblr和其他服务提供了类似的function,允许您将CNAMElogging指向用户子域。 我一直无法find关于如何工作的很多信息。 允许用户在应用程序中使用自定义域名的最佳方式是什么?

如何删除mongoose中的特定子文档

嗨,我是新来的MongoDB和编程。 我想删除特定的父文档中的特定子文档,我正在使用Mongoose和Node.js。 这是我的模式模型(user.js文件): var userStuff = mongoose.Schema({ itemName: String, itemDesc: String }); var userSchema = mongoose.Schema({ googleEmail: String, googleName: String, stuff: [userStuff] }); exports.user = mongoose.model('User', userSchema); exports.userStuff = mongoose.model('UserStuff', userStuff); 这是我如何删除: var User = require("../../models/user.js"); … var userId = req.session.passport.user; var deleteItemId = req.params.id; User.user.findOne({_id: userId}, function(err, user){ if(err){ console.log(err); }else { User.userStuff.remove({ _id: […]

节点预渲染工作在第一页加载 – 后续加载500错误

你可以validation这是事实。 点击链接,让它加载,然后刷新: http : //www.justinmcmahon.com/? _escaped_fragment_ = 可能意义重大:我的应用程序在端口3000上的docker容器中运行,而prerender服务器(在端口9000上)也运行,两者都在官方的Nginx docker镜像后面运行。 也可能意义重大:顶级域名具有.htaccessredirect到www子域,它指向一个AWS弹性IP。 我现在还不是很聪明,所以这是我现在提出的最好的方法来指出正确的方向。 .htaccessredirect RewriteEngine on RewriteRule ^(.*)$ http://www.justinmcmahon.com/$1 [R=301,L] Nginx的docker-compose.yml: nginx: build: . container_name: Nginx hostname: nginx restart: always environment: – DEFAULT_HOST=www.justinmcmahon.com volumes: – /var/run/docker.sock:/tmp/docker.sock:ro ports: – 80:80 – 443:443 – 5984:5984 Prerender Dockerfile FROM node:5.2.0 ENV NPM_CONFIG_PRODUCTION=true ENV NODE_ENV=production COPY dist /app WORKDIR /app RUN […]

客户端下载一个服务器生成的zip文件

在有人说“重复”之前,我只想确定一下,那些人知道我已经回顾了这些问题: 1)使用angular度和PHP,不知道这里发生了什么(我不知道PHP): 下载压缩文件,并从angular度的方法触发“保存文件”对话框 2)不能得到这个答案做任何事情: 如何使用angular度下载一个zip文件 3)这个人已经可以下载,这是过去的点,我试图找出: 下载外部压缩文件从触发angularbutton操作 4)没有答案: 从nodejs服务器下载.zip文件 5)我不知道甚至是什么语言: https : //stackoverflow.com/questions/35596764/zip-file-download-using-angularjs-directive 鉴于这些问题 ,如果这仍然是重复的,我很抱歉。 这是这个问题的另一个版本。 我的angular度1.5.X客户端给我一个标题列表,其中每个标题都有一个关联的文件。 我的节点4.X / Express 4.X服务器获取该列表,获取文件位置,使用来自npm的express-zip创build一个zip文件,然后将该文件传回给响应。 然后我希望我的客户端启动浏览器的“下载文件”选项。 这是我的客户端代码(Angular 1.5.X): function bulkdownload(titles){ titles = titles || []; if ( titles.length > 0 ) { $http.get('/query/bulkdownload',{ params:{titles:titles}, responseType:'arraybuffer' }) .then(successCb,errorCb) .catch(exceptionCb); } function successCb(response){ // This is the part I believe I […]

如何在Node.js中检索客户端和服务器的IP地址和端口号

我试图search很多,find一种方法来知道客户端和服务器的IP地址和端口号。 到目前为止,我发现: 客户端ip :可以通过req.ip 。 客户端端口 :我search了很多,但我找不到find这个客户端临时端口的方法。 在检查req和res对象后,我发现有时候res.connection._peername包含客户端的IP地址和端口号。 但是,这不是find端口号的可靠方法,因为在某些请求中缺less这个属性。 那么,了解港口的正确方法是什么? 服务器IP :在这里我有兴趣了解服务器的外部或公共IP。 我search了一下相同的,我发现这个链接 ,使用一些外部的API来检索外部IP。 这是唯一可能的方法来find外部IP? 或者还有其他方法吗? 服务器端口 :通过listener.address().port [source]可以知道。 但是可以从req或res物体中知道吗? 其实我想知道中间件,我有req , res和next (基本上app.use(function(req,res,next){…})) )的端口号。

Express js不提供静态文件

我已经走上了这条路 var path = require('path'); var express = require('express'); var app = express(); var admin = express(); admin.use(express.static(path.join(__dirname, 'public/'))); // mount admin path app.use('/admin', admin); 然后我定义了一些路线,例如 admin.get('/jobs', function(req, res){ res.render('jobs/index'); }); admin.get('/jobs/create', function(req, res){ res.render('jobs/create'); }); 在第一个路由静态文件,如js,css,images加载没有问题。 但在第二个它不会加载文件。 文件加载在像这样的意见 <link rel="stylesheet" href="styles/css/main.css"> 注意:styles目录在我的工作目录中的公共文件夹下。 那么问题是什么? 我做错了什么?

TypeError:dest.end不是一个函数

我正在尝试使用HTTP / 2。 我的快递版本是5.0.0-alpha.2, http2版本是3.3.4。 我想http2应该和express 5一起工作 。 const http2 = require('http2'); // const http2 = require('spdy'); // using spdy package here, everything works perfect const options = { key: fs.readFileSync(path.join(__dirname, 'private', 'server.key')), cert: fs.readFileSync(path.join(__dirname, 'private', 'server.crt')) }; const server = http2 .createServer(options, app) .listen(3000, err => { if (err) throw new Error(err); // I […]

在中间件node.js中设置一个表头框架

我有一个中间件做一些authentication。 在这个authentication方法,我需要设置一个响应头。 server.get('/api/users, auth(), getUsers); 我的authmethod: module.exports = (isProduction) => { return function(req, res, next){ … next(); } } 如何在这个auth函数中附加一个头文件?