Articles of express

了解express.js / sail.js控制器范围内的下一个中间件

我使用的是build立在express.js之上的sails.js。 在我的routes.js中,我定义了如下的路由 '/account/login': { controller : 'Session', action : 'logInAPI' }, 而我的会议控制器是这样的 logInAPI: function(req, res, next) { if (!req.param('email') || !req.param('password')) { var usernamePasswordRequiredError = [ 'You must enter a username and a password.' ] req.session.flash = { err: usernamePasswordRequiredError } return next(); } else{// Log in user}; } 我想知道什么时候我打电话在哪里指着中间衣服。 如果写回报将会发生什么; 而不是返回next();

使用快速REST API编辑post

我有一个与mongoose和mongoDBangular度expression的应用程序 对于angular部分我有: .controller('EditPostCtrl', ['$scope', '$http', '$location', '$routeParams', function($scope, $http, $location, $routeParams){ // populate the form $scope.form = {}; $http.get('/api/post/' + $routeParams.post_id) .success(function(data){ $scope.form = data; }); // save changes and redirect $scope.editPost = function(){ $http.put('/api/post/' + $routeParams.post_id, $scope.form) .success(function(data){ $location.url('/post/' + $routeParams.post_id); }); }; }]) 那么对于快件我有一个路线: app.put('/api/post/:post_id', posts.editPost); exports.editPost = function(req, res){ var updatedPost = […]

使用CORS与LocomotiveJs Rest API。 适用于本地机器,但不适用于Amazon或Heroku

使用CORS与LocomotiveJs Rest API。 适用于本地机器,但不适用于Amazon或Heroku 我使用LocomotiveJs做了一个REST api,现在我正在试图启用CORS。 我将下面的代码添加到我的“所有”环境(config / environments / all.js)。 this.use(function crossOrigin(req,res,next){ res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication"); res.header("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS"); return next(); }); 它在我的本地机器上工作,但是当我部署到Heroku或AWS时,我得到一个404 Http错误,当客户端发送OPTIONS命令。 为了隔离问题,我开发了一个简单的Express应用程序,使用下面的代码: var express = require('express'); var app = express(); app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication"); next(); }); app.get('/test', function(req, res){ res.set('Content-Type', 'application/json'); res.send({ 'Hello' : 'World' }); }); var […]

Node.js + express:重写urlpath

我想知道是否有可能用express来重写url。 我其实有这个代码: var http, express, app; http = require("http"); express = require("express"); app = express(); app.use(express.json()) app.use(express.urlencoded()) .post("/ajax_login", function (req, res) { "use strict"; http.get({ host: "localhost", port: 8080, path: "/users/" + req.body.email + "/email" }, function (resp) { resp.setEncoding("utf8"); resp.on("data", function (data) { json = JSON.parse(data); if (json.password.password === sha1(req.body.password)) { res.render("home.ejs"); } else […]

Openshift无法加载c ++ bson扩展/无法find模块('swig')

我试图让我的节点/ mongo / express应用程序在Openshift上工作。 它在本地工作,但在Openshift上我得到一个错误:无法find模块('sw')我已经将它添加到我的依赖在package.json如下所示。 "dependencies": { "bcrypt-nodejs": "~0.0.3", "consolidate": "~0.9.1", "express": ">=3.x", "mongodb": "~1.3.9", "swig": "~0.14.0", "validator": "~1.1.3" }, "devDependencies": {}, "bundleDependencies": [], 我需要在我的server.js中像这样: var swig = require('swig'); var cons = require('consolidate'); //later app.engine('html', cons.swig); 完整的错误读取: Failed to load c++ bson extension, using pure JS version Current directory: /var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/ repo /var/lib/openshift/52fda83ee0b8cd07040001cb/app-root/runtime/repo/node_modules/m ongodb/lib/mongodb/mongo_client.js:378 throw err […]

骨干路由器:摆脱URL中的#

我得到骨干路由器工作 App.Router = Backbone.Router.extend({ routes: { "todo": "todo" }, todo: function() { alert(1); } }); Backbone.history.start(); 当我转到url: domain:port /#/ todo时,这个效果很好 我希望这个工作没有#在URL中,我试着把文件中提到的pushState参数。 Backbone.history.start({pushState: true}); 这只是将#urlredirect到非哈希值 domain:port /#/ todo(redirect到==>)domain:port / todo 但是当我直接访问这个URL 域:端口/待办事项 它不起作用:“不能GET / todo”。 有没有什么办法,我可以使这个url没有#的工作呢?

在Heroku上为Mongo Labs数据库configurationNode.js连接string

我的web应用程序(build立在Node.js和Express上)在本地工作正常,但是当我将它部署到Heroku时,我无法连接到Mongo Labs数据库。 我更改了我的'app.js'文件中的连接string,以正确反映新的Heroku Mongo Labs数据库的URI(假冒的用户名和密码在下面被replace)。 我也尝试了几个stackoverlow解决scheme不能连接到mongolab与heroku上的node.js以及https://devcenter.heroku.com/articles/getting-started-with-nodejs#using-mongodb但是,似乎也工作。 我怀疑这是有点不同,因为我使用Mongoskin。 原来的连接: var db = mongo.db("mongodb://localhost:27017/userdir", {native_parser:true}); 更改为新的连接: var db = mongo.db("mongodb://user:pass@dbh23.mongolab.com:27237/heroku_app24581691",{native_parser:true}); 任何想法,我在这里失踪? var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); // Database var mongo = require('mongoskin'); var db = mongo.db("mongodb://user:pass@dbh23.mongolab.com:27237/heroku_app24581691", {native_parser:true}); // […]

如何捕获这个错误NodeJs / Express?

我正在尝试使用NodeJ编写简单的Web服务。 我打电话给Ajax如下: $.ajax({ type: "POST", url: "http://localhost:3800", // this json below is invalid and I need to verify it on server side data: '"jhhjh":"ssss"}', contentType: "application/json; charset=utf-8", dataType: "json", success: function(data){ console.log(data); }, failure: function(errMsg) { console.log(errMsg); } }); 然后在服务器端我有这样的代码: var express = require("express"), app = express(), bodyParser = require('body-parser'); app.use(bodyParser()); app.all('/', function(req, res, next) […]

在Node.js中包含HTML文件

我似乎无法弄清楚如何使用Node.js包含文件。 所有其他问题似乎讨论包括其他JS文件,但我正在寻找相当于一个PHP包括(可以包含HTML内容的文件)。 通常在PHP中,我的视图文件是这样的: …stuff <?php include 'header.php'; ?> <?php include 'nav.php'; ?> … more stuff <?php include 'footer.php'; ?> 例如在nav.php我有: <nav role=navigation> <ul> <!– links –> </ul> </nav> Node中是否有类似的function,或者我必须改变开发Web应用程序的方式吗? 如果有帮助,我正在使用Express框架。 一个简短的,工作的例子将不胜感激。

Angularjs在Express 4.0后端API上进行路由

我已经开始使用Express 4.0服务器的应用程序。 我已经在很大程度上根据scotch.io( http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4 )上的教程设置了路线,build立了一个后端api服务于前端SPA(angularjs)。 这里是后端路由器的摘录: router.route('/users') .get(function (req, res) { User.find(function(err, users) { if (err) { res.send(err); } else { res.json(users); } }); }) 再向下 // home page route (http://localhost:8080) router.get('/', function(req, res) { res.send('API ROOT'); }); app.use('/api', router); 从前端我只使用get来从api获取用户: $http.get('/api/users') .success(function(data) { $scope.users = data; }); 而angular度路线是这样设置的: .when('/', { templateUrl: 'views/home.html', controller: 'MainController' […]