Tag: angularjs

大型文件在nodejs下载失败

我有一个服务,build立一个CSV文件,并将其返回给用户。 目前使用的是expressjs v4.14,nodejs v8.7.0。 我的问题是,我得到一个下载失败,因为在Chrome浏览器中的“networking错误”,当我打电话给它的服务来创build一个大型的CSV文件。 用较小的文件,服务工作正常。 我也可以浏览到/temp/文件夹,并且存在整个预期的文件。 在每一件“我试过的东西”中,我都可以下载较小的文件,但不能下载较大的文件。 服务: download.post('/csv', (req, res, next) => { res.status(200).header('Content-Type', 'text/csv'); const newUUID = uuid.v1(); let ws: WriteStream = fs.createWriteStream(`${__dirname}/../../temp/${newUUID}.csv`); ws.on('finish', () => { res.download(`${__dirname}/../../temp/${newUUID}.csv`); }); //csv file built here ws.write('huge stuff easily 50k rows and 10 mb file'); ws.end(); }); Chrome错误: Chrome的networking标签和开发者控制台不会告诉我发生了什么事情。 这下载popup是我得到的。 为了以防万一,我清除了cookies / cache中的所有内容,并没有帮助。 我试过的东西: 直接将数据块写入响应stream。 […]

Node.js Express Restful Api无法获取angular度HTTP发布json

我一直无法访问传递的数据,以表示来自angular度http服务的宁静服务(我用angular + node + express + mongodb构build这个web应用程序) 当我使用angular度来发布数据rest服务,它不能得到我的后json数据,但是当我使用POSTMAN发布数据,然后它正在工作…. 怎么会这样 ? 是我在安静的服务器端缺less的东西? 这是angular度postjson时的回复 { __v: 0, _id: "59e854e9895ea424b40471a9", updateTime: "2017-10-19T07:31:53.301Z", createTime: "2017-10-19T07:31:53.301Z" } 这是postman发布json时的回复 { "__v": 0, "uuid": "123", "major": 10029, "minor": 18910, "bluetoothAddress": "123", "createBy": "root", "updateBy": "root", "_id": "59e852ab4297be32902bae1d", "updateTime": "2017-10-19T07:22:19.417Z", "createTime": "2017-10-19T07:22:19.417Z" } 这是我的angular度代码 controller.js $scope.submitNewIbeacon = function() { let data = { […]

带有节点js的angular度js与$ http.post问题

我的angularjs $ http.post .then方法永远不会得到执行.catch方法执行虽然服务器工作正常,并返回我想要它返回。 这是我的节点js控制器,做电子邮件validation存在 module.exports.add = function(req, res, next) { var user = new User(req.body); User.find({email:req.body.email},function(err,doc){ if(err) { { err.status = 406; return next(err); } } if(doc.length){ return res.status(409).json({message: 'Email already exist'}); } else { user.save(function(err, doc) { if (err) { err.status = 406; return next(err); } return res.status(201).json({message: 'Your account has been created […]

mean.io使用http请求堆叠长angular度运行操作

我正在使用平均值堆栈开发一个Web应用程序,对几个mongo db集合执行几个操作。 系统总体意图是在几个系统之间执行数据同步。 每个系统数据都存储在不同的集合中。 毋庸置疑,这些collections文件具有共同的性质。 在nodeJS或者API级别上,我创build了get和post请求,这些请求将asynchronous地遍历主集合,并尝试将该集合上的文档与其他集合中的文档链接起来。 自然这个过程需要几分钟的时间。 可能链接的文档存储在不同的mongodb集合中。 这些将在稍后的另一个节点js API调用中处理。 API设置后,我正在创build一个控制器和angular度的服务,以连接到API,并执行API获取和发布请求。 当我在UI中点击button来执行这个链接操作时,操作开始时不会阻塞浏览器,但最终浏览器会得到一个ERR_EMPTY_RESPONSE,因为操作仍在进行,所以我从来没有真正调用response.end() 。 我认为可能是一个可能的解决scheme: 操作开始后立即回复:PROBLEM – >我需要确保此操作完成,以便对所产生的集合进行其他调用。 所以我做了这个操作来完成,让其他人在结果数据集上完成。 为了避免浏览器在后台长时间运行操作完成之前closures连接,我该怎么做? 码: html – >用户点击开始链接logging的button: <div> <md-button aria-label="link all records" ng-click="vm.linkRecords()"> <md-icon class="mdi mdi-plus"></md-icon>Link Records </md-button> </div> 控制器 :canLink,canGrade都是布尔variables,所以当服务器正在进行一个操作时,其他任何一个都不能执行。 一旦操作完成,它将返回true,并允许所有操作。 function linkRecords() { $state.go('app.records.link'); }// END linkRecords page $scope.$on('linkRecords', function(event, batchSize){ if ( canLink && canGrade) { […]

我想从多个文本input采取input,并将其发送到我的数据库,但只有最后一个input发送

我有一个mysql数据库/节点后端,连接到一个Angular前端,我正在查询,特别是从3个简单的文本input的forms发送数据。 我相信我的错误对于任何有节点/angular度经验的人来说都是微不足道的,因为我可以成功地从一个文本input发送数据库input; 然而,当我尝试检测和发送来自所有三个input的数据时,它只发送来自哪个input具有其匹配的控制器function的数据作为我的脚本中的最后一个(三个)。 这是我的HTML文件和脚本 var button = document.getElementById("clickButton"); const app = angular.module('app',[]); app.service('appService', ['$http', function($http){ return { 'getSuggestion' : function(suggestion,callback){ $http.post('/getSuggestion', { 'suggestion': suggestion }).success(function (response) { callback(response); }) .error(function (data, status, header, config) { callback({ 'error': true, 'message': "Something went wrong." }); }); } } }]); app.controller('app', function($scope,appService) { //message send Function $scope.$watch('messageInput', function […]

在Node.js之外使用require()

我正在试验一个使用Node.js的Angular.js应用程序。 目前我在MY-PROJECT/public/js/controllers.js文件中有下面的代码 function LoginController( $scope ) { // fetch waiters var Waiter = require( '../models/waiter.js' ); } LoginController.$inject = ['$scope']; 正如你所看到的,我使用require()来访问模型文件。 但是好像require()函数在这个文件/文件夹中是不可访问的。 当我访问页面时,我在控制台中得到的错误是: ReferenceError:require没有定义 错误的原因是肯定的,因为我直接将这个controllers.js文件包含在带有脚本标签的HTML文件中(所以Node.js中的require()函数不可用)。 现在我的问题是:如何访问controllers.js文件中的模型文件(例如,从MY-PROJECT/models/waiter.js )? 提前谢谢了!

Angular.js – redirect不工作

我理解Angular.js路由的行为有些困难 这是我的代码 我的app.js: 'use strict'; var app = angular.module('myApp', []). config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { $routeProvider.when('/game/room', {templateUrl: 'roomGame', controller: roomCtrl}); $routeProvider.otherwise({redirectTo: '/game/room'}); $locationProvider.html5Mode(true); }]); index.js我在这里定义了路由服务器端: app.get('/game', function (req, res) { console.log("we are in /game"); res.render("game/index", { user: req.session }); }); app.get('/game/roomGame', function (req, res) { console.log("we are in /game/roomGame"); res.render("game/roomGame"; }); index.jade: div(ng-controller="indexCtrl") a(href='/') Quitter […]

获取TypeError:无法在mysql node.js中调用null的方法'releaseConnection'

我正在使用mysql felix node.js模块。 我正在使用其连接池。 我有很多查询在我的服务器端(写在节点),是这样写的: this.courtsAmount = function(date, callback){ pool.getConnection(function(err, connection) { connection.query('SELECT MAX(id) AS result from courts where date="' + date + '"', function(err, rows, fields){ connection.release(); if (err) throw err; if (rows[0].result) callback(rows[0].result); else callback(0); }); }); }; 由于某种原因我不断收到这个错误(从这样写的各种函数):types错误:不能调用指向'connection.release()'行的null方法'releaseConnection'。 我真的不明白这里的问题是什么,因为我从API中了解了pool.getConnection的function,我应该可以完全访问连接。 也许这是连接超时所必须做的事情? 我相信不是这种情况,因为这个错误发生在我正在通过我的网站。 另一个问题:我必须处理连接将超时如果我使用池的选项? 如果答案是肯定的,我该怎么做? 谢谢。

刷新时获取json数据

我有一个博客应用程序,每个post都有自己独特的永久链接,例如/post/Dh3hdjs*其中Dh3hdjs*是唯一的永久链接。我的问题是当成功创build后,它将redirect到特定的链接,如/post/Dh3hdjs* ,但是在我刷新页面后,它变成了一个json文件。 这是我迄今为止 的NodeJS(express.js) app.get('/post/:permalink', contentHandler.displayPostByPermalink); displayPostByPermalink this.displayPostByPermalink = function(req, res, next) { "use strict"; var permalink = req.params.permalink; posts.getPostByPermalink(permalink, function(err, post) { //get post data //by using permalink "use strict"; if (err) return next(err); res.send(200,post) //if success send the data to angularjs controller }); } getPostByPermalink this.getPostByPermalink = function(permalink, callback) { "use strict"; posts.findOne({'permalink': […]

如何使用Angular和Node Express将CSRF与Redis Session配合使用,会话过期后如何重置会话信息和CSRF?

我正在运行Express和NodeJS作为angular度前端的后端。 我正在使用RedisStore进行会话。 使用这个博客文章 ,我能够拿出以下代码: app.use express.cookieParser(config.session.signed) app.use express.session( { secret: config.session.secret, cookie: config.session.cookie, store: new RedisStore({ client: client }) } ) app.use express.csrf() app.use (req, res, next) -> res.cookie('XSRF-TOKEN', req.session._csrf) next() app.use passport.initialize() app.use passport.session({}) 一切顺利,直到redis会话过期(我有这个设置了两个小时在我的configuration)。 会话过期后,我得到禁止的错误: Error: Forbidden at Object.exports.error (/code/node_modules/express/node_modules/connect/lib/utils.js:62:13) … 问题是,我不知道如何捕捉这个错误,并重置RedisSession(和CSRF令牌),结果,单页angular度前端看起来死了,它需要一个页面刷新抓住一个新的会话并重振东西。 其他人遇到这个问题? 提前致谢