了解Express.js中的中间件和路由处理程序

我想了解中间件和路由处理程序如何在Express中工作。 在“ 使用Node和Express进行Web开发”一书中 ,笔者给出了一个有趣的途径和中间件的例子,但并没有给出实际的细节。 有人能帮我理解下面例子中的每一步会发生什么,这样我就可以肯定我正确地思考了吗? 这里是例子(在我的理解和问题的意见): //get the express module as app var app = require('express')(); //1. when this module is called, this is printed to the console, always. app.use(function(req, res, next){ console.log('\n\nALLWAYS'); next(); }); //2. when a route /a is called, a response 'a' is sent and the app stops. There is no action […]

承诺Js:等待承诺履行

我正在与Bluebird在Node.Js中做出承诺,并想知道如何在履行承诺(完成)时作出函数返回。我想要的行为是: function getItem(){ functionReturningPromise.then(function(result){ //do some operation on result return result; }); } 但是,上述实现不会返回任何东西,因为承诺在执行时没有完成。 什么是最好的解决方法呢? getItem的目的是修改任何functionReturningPromise返回,然后返回它

如何在express / node js发送错误http响应?

所以在login页面我发送证书从angular度来expression通过获取请求。我想要做的是,如果在数据库中发现,发送响应和angular度处理,否则,如果没有在数据库中find我想快递发送错误响应,并处理它angular度错误响应函数,但我的代码不工作。 angular度控制器: myapp.controller('therapist_login_controller', ['$scope' ,'$localStorage','$http', function ($scope, $localStorage,$http) { $scope.login=function(){ console.log($scope.username+$scope.password); var data={ userid:$scope.username, password:$scope.password }; console.log(data); $http.post('/api/therapist-login', data) .then( function(response){ // success callback console.log("posted successfully"); $scope.message="Login succesful"; }, function(response){ // failure callback,handle error here $scope.message="Invalid username or password" console.log("error"); } ); } }]); APP.js: app.post('/api/therapist-login',therapist_controller.login); 控制器: module.exports.login = function (req,res) { var userid=req.body.userid; var […]

Edge.node字段types必须是输出types,但是:undefined

我正在尝试使用与Relay兼容的GraphQL架构来设置node.js服务器。 当试图validation或加载架构时,我得到以下错误: EventEdge.node field type must be Output Type but got: undefined. 这是由其他types定义中的Eventtypes的连接types引起的。 我不会发布整个模式,因为它非常详细,但是当连接字段被注释掉时,模式被正确加载,并且不会引发错误。 我已经包含了一个导致相同问题的简化模式的例子: const graphql = require('graphql') const relay = require('graphql-relay') const GraphQLID = graphql.GraphQLID, GraphQLInt = graphql.GraphQLInt, GraphQLString = graphql.GraphQLString, GraphQLList = graphql.GraphQLList, GraphQLObjectType = graphql.GraphQLObjectType, GraphQLSchema = graphql.GraphQLSchema, GraphQLNonNull = graphql.GraphQLNonNull const connectionArgs = relay.connectionArgs, connectionDefinitions = relay.connectionDefinitions, connectionFromArray = relay.connectionFromArray, […]

如何使用socket.io处理节点服务器上的并发文件写入请求

如何使用socket.io处理节点服务器上的并发文件写入请求。 我正在使用这写: fs.writefile('abc.txt','datatobewritten','utf8',function(err){}); 我有一个文件abc.txt,并假设两个用户试图写在这个文件上的同一时间,然后我得到一个错误,所以如何排队多个请求。

意外的令牌与有效的JSON?

为什么我不能打印这个简单的JSON? jsonlint.com说这是有效的 JSON: [ { "token_start_offset": "0.00", "token_duration": "4.00", "token_base_start_offset": "0.00", "token_base_duration": "4.00", "token_type": "background_noise", "token_background_noise_type": "other", "session_id": "1459194633575", "token_base_form": "…", "token_print_form": "…", "session_boundary": "begin", "nonspeech_boundary": "begin", "token_id": "0" } ] app.js: var testJson = require('./json'); console.log(testJson); 但是当我运行这个,我得到了下面的错误: 错误: module.js:428 throw err; ^ SyntaxError: C:\Users\Owner\Desktop\format test\json.json: Unexpected token at Object.parse (native) at Object.Module._extensions..json (module.js:425:27) at […]

服务工作者推送Angular2的通知

我试图拼凑通过服务工作者给用户推送通知的一般工作stream程。 我遵循这个 Google Developers服务人员推送通知教程,并且正在考虑如何在基于小型用户的Web应用程序中实现这种事情。 在我看来,支持推送通知的Web应用程序的一般工作stream程如下所示: 客户端访问应用 服务工作者产生推送通知端点 客户端将端点发送到服务器 服务器将端点与生成端点的当前用户相关联 每当您的应用程序会说通知值得发生时,服务器就会抓取与该用户关联的推送通知端点,并触发该通知端点向任何用户设备发送推送通知(可能在Chrome 50+等) 基本上我只是想确认一下我的这个技术的一般实现思路是否准确,否则如果我缺less一些东西的话会得到反馈。

从命令行安装ESlint错误

我遇到以下错误安装eslint: npm ERR! Darwin 15.4.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "eslint" npm ERR! node v5.5.0 npm ERR! npm v3.8.8 npm ERR! path /usr/local/lib/node_modules npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall access npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! at Error (native) npm ERR! { [Error: EACCES: […]

如何在单个系统上使用不同版本的node / npm?

我的问题说明了一切。 是否可以在单个系统上安装和使用每个项目的不同版本的npm?

从Aerospike node.js客户端检索主键

我正在尝试使用client.get()来检索Aerospike node.js客户端中的主键。 我已经使用client.put()通过将策略更改为Aerospike.policy.key.SEND来插入logging,如此处和此处所述 。 现在我想和主键一起检索logging。 我试过像Aerospike文档中提到的那样做,但似乎并不奏效。 var key = aerospike.key(aerospikeDBParams.defaultNamespace,aerospikeDBParams.defaultSet,count); var readpolicy = { key: aerospike.policy.key.SEND } client.get(key, readpolicy, function(err, rec, meta){} 我得到所有的垃圾箱,但不是主键。 我在这里错过了什么? 提前致谢。