Tag: express

检查属性是否未定义

我正在构build一个node + express应用程序,并且用从前端表单提交的JSON填充对象。 这工作,除非我在表单中留空字段,以便例如req.body.address.street为空/未定义。 这将导致错误: TypeError: Cannot read property 'street' of undefined var b = new Business({ name: req.body.name, phone: req.body.phone, address: { street: req.body.address.street, postalCode: req.body.address.postalCode, city: req.body.address.city }, owner: { email: req.body.owner.email, password: req.body.owner.password } }); 我的问题是我怎样才能最好的防止我的应用程序崩溃时,值为空。 我想避免手动检查我的应用程序中的每个属性对未定义。 我想知道这个常见问题的最佳做法是什么。 谢谢! 更新:谢谢你,所有的答案都非常有见地。 我决定简化我的POST数据以避免这种行为。 现在我只是发布“街道”,而不是address.street,以避免这种行为。

Mongodb保存到嵌套的对象?

我无法将我的req.body插入到我的mongodb集合中。 我有这条路线,触发add方法和里面我试图找出一个查询来保存req.body到一个嵌套的集合数组 router.post('/api/teams/:tid/players', player.add); add: function(req, res) { var newPlayer = new models.Team({ _id: req.params.tid }, req.body); newPlayer.save(function(err, player) { if (err) { res.json({error: 'Error adding player.'}); } else { console.log(req.body) res.json(req.body); } }); } 这是一个示例文件 [ { "team_name":"Bulls", "_id":"5367bf0135635eb82d4ccf49", "__v":0, "players":[ { "player_name":"Taj Gibson", "_id":"5367bf0135635eb82d4ccf4b" }, { "player_name":"Kirk Hinrich", "_id":"5367bf0135635eb82d4ccf4a" } ] } ] […]

如何使用随机string作为路由参数(ExpressJS)

我正在实现重置密码通过在URLpath中的随机string作为路由参数。 我后来在app.param中使用它。 当随机string包含字符“/”的应用程序无法正常工作。 以下是我的实施 在models / mymodelname.js中 resetId = crypto.randomBytes(16).toString('base64'); 在路由/ mymodelname.js app.post('/resetpassword/:resetId',users.resetPassword); 有什么办法可以使用我的resetId从随机string获取作为路由参数?

TypeError:无法调用未定义的方法“get”

我尝试使用express.js在node.js上创build一个简单的CRUD应用程序。 我尝试连接到数据库,但我有一个错误TypeError: Cannot call method 'get' of undefined 。 我的部分代码: app.js var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/notepad'); var app = express(); app.get('/users', routes.userlist); // mongoDB app.use(function (req, res, next) { req.db = db; // this is setting up db property to request next(); }); 路线/ index.js exports.userlist = function […]

生产节点应用程序无法findSVG文件

在我的本地开发应用程序中,使用下面的代码(花括号embeddedAngular.jsvariables),svg文件显示得很好: <img ng-src="img/servant_{{servant.personality}}.svg" draggable="false"> 但是当部署在Heroku上时,SVG文件会产生一个404: Failed to load resource: the server responded with a status of 404 (Not Found) Angularvariables在生产站点上工作,图像地址是准确的。 所以,这不是问题。 相反,我认为我的Node / Express应用程序可能无法提供SVG文件。 也许这是一个Heroku问题? 仅供参考我正在使用MEAN堆栈。 这是我的公用文件夹的configuration: //Setting the fav icon and static folder app.use(express.static(config.root + '/public')); 图像在 public/img 有什么想法吗?

在Node.js Express中发布和redirect

让我开始说,我是Node.js中的完全新手。 我已经阅读了很多与我的问题相关的post,但是他们要么不适合我,要么我不明白解决scheme。 目前Nodes.js对我来说是相当棘手的:/ 所以这里是我的问题/问题: 我想弄清楚POST处理和redirect程序,我想我错过了一些东西,因为它不能正常工作。 我正在编写一个页面的应用程序,所以所有的页面实际上是一个页面分为几个部分。 说我有一个像这样的HTML表单(这是在login部分): <form method="post" action="/login"> <input name="email" type="email" id="signin-mail"> <input name="pass" type="password" id="signin-username"> <input type="submit" value="send"> </form> 这是我的Node.js服务器代码: var express = require('express'); var bodyParser = require('body-parser'); var fs = require('fs'); var app = express(); app.use(bodyParser()); // app.get('/login', function(req, res){ console.log('GET /') var html = fs.readFileSync('index.html'); res.writeHead(200, {'Content-Type': 'text/html'}); res.end(html); }); […]

在没有Ajax的情况下在angularjs和express / node之间传递数据

我有一个AngularJS应用程序运行在节点/快递后端。 我正在使用护照进行用户validation。 当用户login或注册时,我的angular度控制器通过$http ajax / xhr调用与express进行通信。 表单数据被发送,node / express / passport处理数据,并且用户的信息(即用户名)返回json数据。 Angular然后使用用户信息来更新我的模板,即{{user.username}} 问题是,如果用户刷新整个页面,Angular会丢失这个用户信息。 他们仍然login – req.user仍然包含他们的信息 – 但angular度不知道它。 我想避免ajax调用只是为了检查用户是否login。这将是一个额外的http调用每一个新的访问… 我可以直接将用户数据传递给玉模板,但以后不能更新。

使用sequelize,你如何使用or运算符与where标准?

从以前的SO讨论中,我能够用两个条件更新多个续集实例。 任何人都可以解释如何使用逻辑OR运算符而不是AND运算符来修改sequelize .update方法吗? 以下是使用AND进行更新的两种情况的续集更新方法。 global.db.Task.update( {Desc: 'New Upate'}, //set attribute {cd: 'match', Desc: null} //where criteria ).success(function(affectedRows) { … }); 这将读取一个SQL语句如下: UPDATE "Task" SET "Desc"='New Update' WHERE "Cd"='match' AND "Desc" IS NULL

Node.js – 将值传递给其他页面

我正在尝试使用node.js构build一个Web服务。 在这个体系结构中,curl用于将数据发布到index.js应用程序。 index.js应用程序处理输出,然后它应该将输出传递到不同的页面。 例如,如果收到的ID在100-200之间,则将ID推送到movies.html等等。 现在我已经能够使用CURL和node.js来实现POST请求的处理,我不知道如何将数据传递给其他页面。 这是我的index.js代码。 var http = require('http'); var qs=require('querystring'); var redis=require('redis').createClient(); console.log('Server Starting Now: '); var count=0; http.createServer(function (req, res) { if(req.method=='POST'){ count=count+1; var body=""; req.on('data',function(data){ body+=data; }); req.on('end',function(){ var post=qs.parse(body); console.log(post); res.write("Received"); redis.lpush('XMLqueue',JSON.stringify(post)); }); } }).listen(8124, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8124/'); 如何将这个index.js页面的数据传递给其他页面?

如何parsing我的JSON与外部中间件现在Express不带身体分析器?

如何parsing我的JSON与外部中间件现在Express不带身体分析器? 有一段时间,我使用Express bodyParser接收和响应到服务器的JSONpost。 每次我启动服务器时,表示说bodyParser很快就会被删除,果然,我已经更新,现在JSON请求似乎显示为空。 所以我不明白中间件是如何工作的,并且遵循一个快速教程来使用body parser。 现在,使用单独的身体分析器中间件,似乎我做错了。 以前,我的语法是: app.use(express.bodyParser()); 现在,以模块体parsing器作为中间件,就像这样: app.use(bodyParser.json()); 整个例子: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); function listen() { app.use(bodyParser.json()); app.post('/login', function (req, res) { var username = req.body.username; var password = req.body.password; console.log('User ' + username + ' is attempting login…'); validate(username, password, function (err, result) […]