Tag: 表示

如何指定HTTP错误代码?

我努力了: app.get('/', function(req, res, next) { var e = new Error('error message'); e.status = 400; next(e); }); 和: app.get('/', function(req, res, next) { res.statusCode = 400; var e = new Error('error message'); next(e); }); 但总是错误代码500被宣布。

访问客户端JavaScript中的Express.js局部variables

好奇,如果我这样做是正确的,如果不是你们如何处理这个问题。 我有一个Jade模板需要呈现从MongoDB数据库检索到的一些数据,我也需要访问客户端JavaScript文件中的数据。 我正在使用Express.js并将数据发送到Jade模板,如下所示: var myMongoDbObject = {name : 'stephen'}; res.render('home', { locals: { data : myMongoDbObject } }); 然后在home.jade里面,我可以做这样的事情: p Hello #{data.name}! 其中写道: Hello stephen! 现在我想要的是也可以访问客户端JS文件中的这个数据对象,所以我可以操纵对象说一个button,然后将其返回到服务器来更新数据库。 我已经能够通过在Jade模板的隐藏input字段中保存“data”对象,然后在我的客户端JS文件中获取该字段的值来实现这一点。 在home.jade里面 – local_data = JSON.stringify(data) // data coming in from Express.js input(type='hidden', value=local_data)#myLocalDataObj 然后在我的客户端JS文件我可以像这样访问local_data: 在myLocalFile.js里面 var localObj = JSON.parse($("#myLocalDataObj").val()); console.log(localObj.name); 然而,这个string化/parsing业务感觉混乱。 我知道我可以将我的数据对象的值绑定到我的Jade模板中的DOM对象,然后使用jQuery获取这些值,但是我希望能够访问从客户端JS中快速返回的实际对象。 我的解决scheme是最佳的,你们将如何实现这一目标?

很难理解express.js中的“next / next()”

这是一个例子: // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); (等等。) app.get('/memo', function(req, res) { console.log("index"); Memo.find({}, function(err, data) { if(err) return next(err); res.render('index', { memos: data }); }); }); 这是另一个: app.get('/memo/list', function(req, res, next) { console.log("get memos"); Memo.find({}, function(err, data) { if(err) return next(err); res.json(data); }); […]

何时使用next()并返回Node.js中的next()

场景 :请考虑以下是节点Web应用程序的部分代码。 app.get('/users/:id?', function(req, res, next){ var id = req.params.id; if (id) { // do something } else { next(); } }); 问题 :我正在检查哪一个去next()或return next() 。 对于上面的代码示例,两个代码的工作原理完全相同,在执行部分中没有任何区别。 问题 :有人可以放下什么时候使用next()什么时候使用return next()和一些重要的区别?

我如何testing我的快速应用程序与摩卡?

我刚刚添加了shouldjs和mocha到我的快速应用程序进行testing,但我想知道如何testing我的应用程序。 我想这样做: app = require '../app' routes = require '../src/routes' describe 'routes', -> describe '#show_create_user_screen', -> it 'should be a function', -> routes.show_create_user_screen.should.be.a.function it 'should return something cool', -> routes.show_create_user_screen().should.be.an.object 当然,这个testing套件中的最后一个testing只是告诉医生res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器没有运行,configuration尚未完成。 所以我想知道其他人是如何进行testing的?

什么是单主机Node.js生产应用程序的良好会话存储?

我正在使用Node的Express连接中间件。 Connect的内存会话存储不适合生产: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and obviously only work within a single process. 对于更大的部署,mongo或redis是有意义的。 但是,在生产中的单主机应用程序有什么好的解决scheme?

npm找不到package.json

我试图安装我下载的一些示例Express应用程序的依赖关系,但所有的应用程序都抛出相同的错误: c:\node\stylus>npm install -d npm info it worked if it ends with ok npm info using npm@1.1.1 npm info using node@v0.6.11 npm ERR! Couldn't read dependencies. npm ERR! Error: ENOENT, no such file or directory 'c:\node\stylus\package.json' npm ERR! You may report this log at: npm ERR! <http://github.com/isaacs/npm/issues> npm ERR! or email it to: npm ERR! […]

passport.js passport.initialize()中间件未被使用

我正在使用express + mongoose的节点,并尝试使用passport.js和restful api。 validation成功后,我一直收到这个exception(我在浏览器上看到了callbackurl): /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/utils.js:419 throw err; ^ Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/http/request.js:30:30) at Context.module.exports.delegate.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/middleware/authenticate.js:194:13) at Context.actions.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/context/http/actions.js:21:25) at verified (/Users/naorye/dev/naorye/myproj/node_modules/passport-facebook/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) at Promise.module.exports.passport.use.GitHubStrategy.clientID (/Users/naorye/dev/naorye/myproj/config/passport.js:91:24) at Promise.onResolve (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20) at /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/query.js:1822:13 我读过,我应该把app.use(passport.initialize()); 和app.use(passport.session()); 在app.use(app.router);之前app.use(app.router); 这就是我所做的。 这是我的express.js注册中间件: var express = require('express'), mongoStore = […]

RailwayJS vs TowerJS

再一次…select框架。 我已经停在了这两个TowerJS和RailwayJS,但它们的接缝非常相似,select哪种方式是非常困难的 两者都基于Express,都是RoR风格的框架。 哪一个最有前途,哪一个会更受欢迎? 或者,也许我已经走错了路? 也许我应该select其他框架。 我讨厌什么时候有这么多的框架可供select,没有行业标准可以依靠,或多或less肯定框架将在近两年内发展… 请帮忙,需要专家build议。 谢谢

Node.js + express.js + passport.js:在服务器重启之间保持身份validation

我使用passport.js来处理我的nodejs + express.js应用程序的身份validation。 我设置了一个LocalStrategy从MongoDB中取用户 我的问题是, 当我重新启动节点服务器时 , 用户必须重新进行身份validation 。 这是一个问题,因为我正在积极开发它,不要在每次重新启动时都要login…(+我使用节点监督器) 这是我的应用程序设置: app.configure(function(){ app.use('/static', express.static(__dirname + '/static')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({secret:'something'})); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); }); 和会话序列化设置: passport.serializeUser(function(user, done) { done(null, user.email); }); passport.deserializeUser(function(email, done) { User.findOne({email:email}, function(err, user) { done(err, user); }); }); 我尝试了使用connect-mongodb没有成功的博客上给出的解决scheme(删除链接,因为它不存在了) app.use(express.session({ secret:'something else', cookie: {maxAge: 60000 * 60 * 24 * 30}, […]