Tag: 表示

如何保护MongoDB / MongoDB中的密码字段,以便在填充集合时不会在查询中返回?

假设我有两个集合/架构。 一个是带有用户名和密码字段的用户模式,然后,我有一个博客模式,在作者字段中引用了用户模式。 如果我使用mongoose做类似的事情 Blogs.findOne({…}).populate("user").exec() 我将有博客文档和用户填充,但我如何防止Mongoose / MongoDB返回密码字段? 密码字段被哈希,但不应该返回。 我知道我可以省略密码字段,并在一个简单的查询中返回其余的字段,但我怎么做与填充。 另外,有没有优雅的方式来做到这一点? 此外,在某些情况下,我确实需要获取密码字段,例如当用户想要login或更改密码。

node / express:使用Forever连续运行脚本时设置NODE_ENV

当我永远使用来启动我的节点脚本时,如何将NODE_ENVvariables/参数设置为“production” 我到目前为止: forever start -l forever.log -o out.log -e err.log -a app.js

与NPM一起安装时未findExpress模块

当我尝试运行由express创build的app.js文件时,出现以下错误: $ node app.js node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'express' at Function._resolveFilename (module.js:320:11) 当我input'express –version'时,我得到了2.3.3的返回语句。 我用npm来安装express。 我不得不使用这些指令手动制作npm: git clone http://github.com/isaacs/npm.git cd npm sudo make install 错误是Error: Cannot find module 'express' 。 在安装npm和express之后我需要做些什么来明确地看到由npm创build的模块吗? 我的节点是版本:0.4.6我的快递是版本:2.3.3我的npm是版本:1.0.6 Express全球安装。 我用-g标志来安装它。 编辑:当我尝试“节点-e require.paths”我得到: ['/home/user/.node_modules','/home/user/.node_libraries','/ usr / local / lib […]

如何解压(解压缩)一个NodeJS请求的模块gzip响应正文?

如何在请求的模块响应中解压缩gzip体? 我已经在网上尝试了几个例子,但是没有一个能够工作。 request(url, function(err, response, body) { if(err) { handleError(err) } else { if(response.headers['content-encoding'] == 'gzip') { // How can I unzip the gzipped string body variable? // For instance, this url: // http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/ // Throws error: // { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' } // Yet, browser displays page fine and […]

为什么我可以在“res.send”之后执行代码?

我想知道下面的代码行为背后的机制是什么: res.send(200, { data: 'test data' }); console.log('still here…'); 我的理解是res.send不会返回函数,但会closures连接/结束请求 。 这可以解释为什么我仍然可以执行res.send命令后执行代码(我通过快速查看源代码,它似乎不是一个asynchronous函数)。 还有其他什么东西可以丢失吗?

无法使用Express.js更改Favicon

这是一个非常基本的问题,但我试图改变我的node.js / Express应用程序的图标 app.use(express.favicon(__dirname + '/publichttp://img.dovov.comfavicon.ico')); 我仍然得到默认的图标。 这是在我的app.configure函数中,是的,我已经validation在/publichttp://img.dovov.comfavicon.ico有一个favicon.ico 。控制台中没有关于favicon.ico的任何内容,导致我相信这行代码被忽略了。 所有其他的function(设置端口,设置视图目录,设置模板引擎等)似乎工作正常,那么为什么这行代码不会执行? 我试过了 清空浏览器caching 重新启动terminal并再次运行node app.js 添加{ maxAge: 2592000000 } ,如下所述 提前致谢。 更新:我得到它的工作。 有关更多信息,请参阅下面的答案。

如何从文档中排除一些字段

我有以下简单的shema: var userSchema = new Schema({ name : String, age: Number, _creator: Schema.ObjectId }); var User = mongoose.model('User',userSchema); 我想要做的是创build新的文档,并返回到客户端,但我想从一个排除“创build者”字段: app.post('/example.json', function (req, res) { var user = new User({name: 'John', age: 45, _creator: 'some ObjectId'}); user.save(function (err) { if (err) throw err; res.json(200, {user: user}); // how to exclude the _creator field? }); }); 最后,我想发送没有_creator字段的新创build的用户: […]

根据调用res.render()的文件的位置更改Express视图文件夹

我想调用res.render()时更改Express的视图文件夹。 例如,如果我在/folder/file.js文件中调用res.render(viewName),我希望Express可以查看/ folder / views中的视图。 如果文件在/folder1/folder2/file.js里面,我想快速查看/ folder1 / folder2 / views里面的视图 可能吗 ?

如何在node / express中发送自定义http状态消息?

我的node.js应用程序像express / examples / mvc应用程序一样build模。 在一个控制器动作中,我想用自定义的http消息吐出一个HTTP 400的状态。 默认情况下,http状态消息是“错误的请求”: HTTP/1.1 400 Bad Request 但我想发 HTTP/1.1 400 Current password does not match 我尝试了各种方法,但没有一个将http状态消息设置为我的自定义消息。 我目前的解决scheme控制器function如下所示: exports.check = function( req, res) { if( req.param( 'val')!=='testme') { res.writeHead( 400, 'Current password does not match', {'content-type' : 'text/plain'}); res.end( 'Current value does not match'); return; } // … } 一切正常,但…似乎不是正确的做法。 有没有更好的方法来设置http状态消息使用快递?

如何在请求新页面时使用Express(Node.js)来使用AngularJS路由?

我正在使用Express,它从静态目录加载AngularJS。 通常情况下,我会请求http://localhost/ ,其中Express服务于我的index.html和所有正确的Angular文件等。在我的Angular应用程序中,我有这些路由设置,它将以ng-view : $routeProvider.when('/', { templateUrl: '/partials/main.html', controller: MainCtrl, }); $routeProvider.when('/project/:projectId', { templateUrl: '/partials/project.html', controller: ProjectCtrl, }); $locationProvider.html5Mode(true); 在我的主页上,我有一个链接到<a href="/project/{{project.id}}"> ,将成功加载模板,并指示我到http://localhost/project/3或任何ID我已经指定。 问题是当我尝试将浏览器导向到http://localhost/project/3或刷新页面时,请求将发送到Express / Node服务器,该服务器返回Cannot GET /project/3 。 如何设置我的快速路线以适应此? 我猜这将需要在Angular中使用$location (尽pipe我宁愿避免使用丑陋的search和#hashes),但我对如何设置Express路由来处理这个。 谢谢。