Tag: express

如何获取mongoose所有嵌套的文档对象

我是mongo DB的新手。 我正在开发一个使用MEAN堆栈的应用程序。 在我的后端,我有两个模型 – function和项目。 项目模式有一个叫做“特征”的属性,它是一个特征对象的数组。 var mongoose = require('mongoose'), Schema = mongoose.Schema; var ProjectSchema = new Schema({ name: { type: String, default: '', trim: true }, features:{ type: [Schema.ObjectId], ref: 'Feature' } }); /** * Statics */ ProjectSchema.statics.load = function(id, cb) { this.findOne({ _id: id }) .populate('features') .exec(cb); }; mongoose.model('Project', ProjectSchema); 请注意,我有function和项目模式的单独文件。 我将这两个模式注册为mongoose模型。 […]

Node.js如何处理未封闭的HTTP响应

考虑一个简单的快速应用程序: app.get '/hang', (req, res) -> console.log 'Request ', n n += 1 # res.send 200 哎呀,我不小心把res.send了出来,好吧,让我们看看会发生什么! 如果我用浏览器打开/hang ,它就在那里旋转,这是有道理的。 没有send我们不closures连接(正确的假设?)。 让我们来看看如果我们用一堆同时连接进行连接 ,会发生什么情况: $ ab -n 1000 -c 1000 http://localhost:3000/hang Benchmarking localhost (be patient) apr_socket_recv: Connection reset by peer (104) 该应用程序设法打印出几百个Request n ,然后就卡住了。 我的问题是: 这里发生了什么事? 这些连接最终会closures吗? 要么: 我的服务器现在是否重新启动? 额外: 您可以将-r传递给ab以使其忽略套接字错误。 当我使用的时候,我开始看到ab列出了一些要求完成: Completed 100 requests Completed 200 […]

JSONstring直接从节点mongodb

我已经在一个简单的服务器上进行了一系列的负载testing,试图确定哪些负面影响了我的复杂的node / express / mongodb应用程序的负载。 其中一个常常出现的问题是string操作需要在快速响应中将内存中的对象转换为JSON。 我通过节点从mongodb获取的数据量和通过networking发送的数据量是〜200/300 KB(未压缩的)。 (Gzip会把这个变成28k,好多了。) 有没有办法让本地nodejs的mongodb驱动程序为我的结果stringify结果? 现在,对于标准.toArray()的每个请求,我们正在执行以下操作: 查询数据库,查找结果并将其传送到节点本地驱动程序 本地驱动程序然后把它们变成一个内存中的JavaScript对象 我的代码然后传递这个内存中的对象来表示 Express然后将其转换为string节点的http response.send使用JSON.stringify()(我读的源卢克。) 我正在寻找在c ++ /本地层完成string化工作,以便它不会将处理时间添加到我的事件循环。 有什么build议么? 编辑1: 这是一个被certificate的瓶颈。 可能很容易有其他的事情可以优化,但这里是负载testing显示。 我们在几秒钟内发出了500次请求。 有了这个代码: app.get("/api/blocks", function(req, res, next){ db.collection('items').find().limit(20).toArray(function(err, items){ if(err){ return next(err); } return res.send(200, items); }); }); 总体平均值:323ms,95% 如果我换出json数据: var cached = "[{… "; //giant json blob that is a copy+paste of […]

JavaScript Express返回空的JSON

伙计们,我有一个函数创build一个对象,我想返回到浏览器。 出于某种原因,浏览器正在获取一个没有内容的空对象: { pName: [ ] } 这里是通过console.log(require('util').inspect(projectObject, false, 10));对象console.log(require('util').inspect(projectObject, false, 10)); { pName: [ foo: [ nodejs: [ staging: [ { name: 'i-4a14c51a', id: 'i-4a14c51a' }, { name: 'i-19fc094a', id: 'i-19fc094a' }, ], production: [ { name: 'i-5f14c50f', id: 'i-5f14c50f' }, { name: 'i-b1fb0ee2', id: 'i-b1fb0ee2' }, ] ] ], … 我会想象它不返回对象的原因是因为它认为第一个实体是空的。 我在哪里犯错误? 结果需要看起来喜欢: […]

如何在Azure上现有的node.js应用程序中安装Ghost?

你可以安装Ghost( http://ghost.org ),以便它运行在一个现有的node.js快递应用程序(如:{我的域名} /博客)? 我正在使用Azure网站托pipe该网站。 请注意:我更喜欢可以在任何平台上运行的通用解决scheme…但是我想我会提到它在Azure上,以便它提供一种简单的方法来执行此操作。

如何使用MEAN堆栈提交成功的发布请求?

好的,我正在使用yeoman来搭build一个项目。 最后我想学习支架CRUD。 我被卡在一个post请求。 我已经select了angular度全堆发生器,因为我对正常的angular发生器非常舒服。 当我试图向Things集合提交一个新对象时,我的post请求被尝试了400错误。 我很迷路,我需要使用这个文件夹结构看到一个发布请求的完整代码。 更新: 400错误消失,但是,req.body。 更新2:一切正常工作现在答案都在我的代码和答案。 因此, 使用yeoman的angular-fullstack生成器,我将如何发出post请求,以在Mongo db的Thing集合中创build一个awesomeThing。 我肯定错过了一些东西,但是我认为大部分需要使POST请求成功的部分在下面介绍。 任何方向将不胜感激。 应用程序/视图/分音/ main.html中 <div class="row marketing"> <div ng-repeat="thing in awesomeThings"> <h4>{{thing.name}}</h4> <p>{{thing.info}}</p> </div> </div> <form ng-submit="addAwesome()"> <input type="text" ng-model="tempAwesome.name"> <input type="submit" class="btn btn-primary" value="Add"> </form> 应用程序/脚本/控制器/ main.html中 $scope.name = []; $http.get('/api/awesomeThings').success(function(awesomeThings) { $scope.awesomeThings = awesomeThings; }); $scope.addAwesome = function() { $http.post('/api/awesomeThings', $scope.tempAwesome).success(function(postData) […]

在express.js上使用holder.js与express web框架一起工作

我使用快速Web框架和玉模板分析器使用node.js。 我遵循引导示例,并与holder.js有问题。 我已经把holder.js脚本放入静态文件(公共目录),在app.js中有以下内容: app.use(express.static(path.join(__dirname, 'public'))); 我想用以下代码在玉石模板中显示一些图像: img(data-src='/holder.js/500×500/auto') 它不起作用。 我通过浏览器检查,我能够正确地看到holder.js文件,但添加任何参数导致主页面显示。 我怀疑静态文件处理程序认为没有持有人/ 500×500 /汽车这样的文件,并redirect到主页面。 我该如何解决这个问题?

mongodb增量编号 – 500内部服务器错误

我正在尝试用节点和mongodb对我的文档的id进行编号。 我得到一个500内部服务器错误:'无法读取属性'seq'null。 //提交一张票 – 这是返回一个500错误 – 不更新ID router.post('/ticketform', function(req, res){ var db = req.db; function getNextSequence(name, callback){ db.counters.findAndModify( { query:{ _id:name}, update:{$inc:{seq:1} }, new:true }, callback ); } getNextSequence('ticket', function(err, obj) { if (err) console.error(err); db.users.insert( { '_id': obj.seq, 'firstname':req.body.firstname, 'lastname':req.body.lastname, 'email':req.body.email, 'phone':req.body.phone, 'issue':req.body.issue }, function(err,docs) { if (err) console.error(err); console.log(docs); res.end(); }); }); });

在公共资产目录中包含.html文件?

我正在使用Node.js / Express来创build一个Web应用程序。 默认情况下,视图保持与公用文件夹分开。 我明白,这是因为这些文件可能并不总是静态的,即使用Jade模板时。 但是,在我的.html文件总是静态的情况下,是否适合将它们与javascript,图像和css一起包含在公共目录中?

expressjs中的路由错误

我试图学习expressjs,并试图找出一种方法来添加MVC结构。 出于某种原因,当我尝试访问本地主机:3000时,出现404错误。 我的目录结构是: 应用 app.js routes.js 控制器 意见 等等 App.js: mymodule = { /* initialize * ============================== * load dependencies & external node modules, setup engines */ initialize: function() { // load modules this.express = require('express'); this.path = require('path'); this.favicon = require('static-favicon'); this.logger = require('morgan'); this.cookieParser = require('cookie-parser'); this.bodyParser = require('body-parser'); // initialize main express […]