场景 :请考虑以下是节点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()和一些重要的区别?
我正在使用Node.js( Forms )的Forms库,它将在后端为我呈现一个表单,如下所示: var signup_form = forms.create({ username: fields.string({required: true}) , password: fields.password({required: true}) , confirm: fields.password({ required: true , validators: [validators.matchField('password')] }) , email: fields.email() }); var signup_form_as_html = signup_form.toHTML(); 最后一行var signup_var signup_form_as_html = signup_form.toHTML(); 创build一个HTML块,如下所示: <div class="field required"><label for="id_username">Username</label><input type="text" name="username" id="id_username" /></div><div class="field required"><label for="id_password">Password</label><input type="password" name="password" id="id_password" /></div><div class="field required"><label for="id_confirm">Confirm</label><input […]
我想像通常一样使用express.static(static_path)来处理静态文件,但是在dynamic路由上 app.get('/my/dynamic/:route', function(req, res){ // serve stuff here }); 一个开发者在这个评论中暗示了一个解决scheme,但是我不清楚他的意思。
好奇,如果我这样做是正确的,如果不是你们如何处理这个问题。 我有一个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应用程序的依赖关系,但所有的应用程序抛出相同的错误: 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! […]
我努力了: 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被宣布。
这是我第一次使用Node.js,遇到了这个问题: 我已经通过IDE的插件启动了一个Node服务器。 不幸的是,我不能使用IDE的terminal。 所以我试图从命令行运行脚本。 这是问题 – 我正在使用Express模块,我的应用正在监听某个端口(8080)。 当我从命令行启动应用程序时,会引发此错误: events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:770:11) at HTTPServer.Server._listen2 (net.js:910:14) at listen (net.js:937:10) at HTTPServer.Server.listen (net.js:986:5) at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) 即使我不是很确定这个错误可能是什么,我认为这是因为该应用程序正在监听已经在使用的端口。 所以我做了: netstat -an 我可以看到 TCP […]
我正在使用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?
我刚刚添加了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的?
我正在使用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 = […]