Tag: express

如何在mongodb-native findOne()中使用variables作为字段名称?

我在MongoDB中有这个数据: { "name": "Amey", "country": "India", "region": "Dhule,Maharashtra" } 我想检索作为variables传递的字段名称上的数据查询。 以下不起作用: var name = req.params.name; var value = req.params.value; collection.findOne({name: value}, function(err, item) { res.send(item); }); 我如何查询mongodb保持字段名称和它的值dynamic?

允许CORS REST请求到Heroku上的Express / Node.js应用程序

我在node.js的快速框架上编写了一个REST API,这个框架适用于Chrome中js控制台的请求和URL栏等等。我现在试图让它适用于来自另一个应用程序的请求域(CORS)。 第一个由javascript前端自动创build的请求是/ api / search?uri =,并且在“预检”选项请求中显示为失败。 在我的快速应用程序中,我添加CORS标题,使用: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); // intercept OPTIONS method if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }; 和: app.configure(function () { app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(allowCrossDomain); app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true […]

MongoDB / Mongoose在特定date查询?

有没有可能查询一个特定的date? 我在mongo Cookbook中发现,我们可以在范围内查询date范围。就像这样: db.posts.find({"created_on": {"$gte": start, "$lt": end}}) 但是,具体date有可能吗? 这不起作用: db.posts.find({"created_on": new Date(2012, 7, 14) })

E11000在mongodbmongoose中重复键错误索引

以下是我在user.js模型中的user架构 – var userSchema = new mongoose.Schema({ local: { name: { type: String }, email : { type: String, require: true, unique: true }, password: { type: String, require:true }, }, facebook: { id : { type: String }, token : { type: String }, email : { type: String }, name : { type: […]

在express.js上启用HTTPS

我试图让HTTPS的express.js工作节点,我无法弄清楚。 这是我的app.js代码。 var express = require('express'); var fs = require('fs'); var privateKey = fs.readFileSync('sslcert/server.key'); var certificate = fs.readFileSync('sslcert/server.crt'); var credentials = {key: privateKey, cert: certificate}; var app = express.createServer(credentials); app.get('/', function(req,res) { res.send('hello'); }); app.listen(8000); 当我运行它,似乎只响应HTTP请求。 我写了简单的基于vanilla node.js的HTTPS应用程序: var fs = require("fs"), http = require("https"); var privateKey = fs.readFileSync('sslcert/server.key').toString(); var certificate = fs.readFileSync('sslcert/server.crt').toString(); var credentials […]

Node.js / Express.js – app.router如何工作?

在我问及app.router之前,我想我应该至less解释一下我在使用中间件时会发生什么。 要使用中间件,要使用的函数是app.use() 。 当中间件被执行时,它将使用next()调用下一个中间件,或者使其不再调用中间件。 这意味着我放置中间件的顺序是很重要的,因为有些中间件依赖于其他中间件,有些中间件甚至可能不会被调用。 今天我正在处理我的应用程序,并让我的服务器在后台运行。 我想做一些改变,刷新我的网页,立即看到变化。 具体来说,我正在改变我的布局。 我无法得到它的工作,所以我search堆栈溢出的答案,并发现这个问题 。 它说确保express.static()在require('stylus')之下。 但是当我看着OP的代码的时候,我看到他在中间件调用的最后有他的app.router调用,我试图找出原因。 当我制作了我的Express.js应用程序(版本3.0.0rc4)时,我使用了命令express app –sessions –css stylus并在我的app.js文件中使用我的app.router安装了express.static()并require('stylus')调用。 所以看来,如果它已经以这种方式设置,那么它应该保持这种方式。 重新安排我的代码后,我可以看到我的触笔更改,它看起来像这样: app.configure(function(){ //app.set() calls //app.use() calls //… app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(__dirname + '/public', {maxAge: 31557600000})); }); app.get('/', routes.index); app.get('/test', function(req, res){ res.send('Test'); }); 所以我决定,第一步是找出为什么在我的代码中甚至有app.router是非常重要的。 所以我评论说,开始我的应用程序,并导航到/ 。 它显示我的索引页面很好。 嗯,也许它工作,因为我从我的路线文件(routes.index)导出路由。 所以接下来我导航到/test并在屏幕上显示testing。 哈哈,好的,我不知道app.router是做什么的。 无论是否包含在我的代码中,我的路由都很好。 所以我肯定错过了一些东西。 所以这里是我的问题: 有人可以解释一下app.router作用,它的重要性,以及我应该把它放在我的中间件调用中? 如果我对express.static()有一个简单的解释,那也是很好的。 据我所知, […]

错误:请求实体太大

我收到以下错误与快递: Error: request entity too large at module.exports (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/node_modules/raw-body/index.js:16:15) at json (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/json.js:60:5) at Object.bodyParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:53:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.cookieParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.logger (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/logger.js:158:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.staticMiddleware [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/static.js:55:61) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) TypeError: /Users/michaeljames/Documents/Projects/Proj/mean/app/views/includes/foot.jade:31 29| script(type="text/javascript", src="/js/socketio/connect.js") 30| > 31| if (req.host='localhost') 32| //Livereload script […]

没有“Access-Control-Allow-Origin” – 节点/ Apache端口问题

我使用Node / Express创build了一个小的API,并试图使用Angularjs来获取数据,但是当我的html页面在localhost上的apache下运行时:8888和node API在端口3000上侦听,我得到了No Access-允许来源。 我尝试使用node-http-proxy和Vhosts Apache,但没有太多的成功,请看下面的完整的错误和代码。 “XMLHttpRequest无法加载localhost:3000,请求的资源上没有”Access-Control-Allow-Origin“标头,因此Origin'localhost:8888'不允许访问。 // Api Using Node/Express var express = require('express'); var app = express(); var contractors = [ { "id": "1", "name": "Joe Blogg", "Weeks": 3, "Photo": "1.png" } ]; app.use(express.bodyParser()); app.get('/', function(req, res) { res.json(contractors); }); app.listen(process.env.PORT || 3000); console.log('Server is running on Port 3000') // Angular code […]

如何检索POST查询参数?

这是我简单的forms: <form id="loginformA" action="userlogin" method="post"> <div> <label for="email">Email: </label> <input type="text" id="email" name="email"></input> </div> <input type="submit" value="Submit"></input> </form> 这是我的Express.js /Node.js代码: app.post('/userlogin', function(sReq, sRes){ var email = sReq.query.email.; } 我试过sReq.query.email或sReq.query['email']或者sReq.params['email']等等,它们都不起作用。 他们都返回undefined 。 当我改变为一个Get调用,它的工作,所以..任何想法?