Articles of express

与Socket.io和Docker无法获得超过980个连接

我无法扩展我的简单的Socket.IO应用程序过去使用Docker的980个并发连接。 但是,如果我在macOS Sierra 10.12.6本地运行它,我可以获得超过3000个连接。 我已经包含了我正在testing的一个简单的SocketIO应用程序的回购: https : //github.com/gsccheng/simple-socketIO-app 我的Docker-for-Macconfiguration为4个CPU和5GB内存。 版本是 Version 17.09.0-ce-mac35 (19611) Channel: stable a98b7c1b7c 我正在使用炮兵版本1.6.0-9加载testing $ artillery run load-test.yaml 我正在显示一些设置的冗余configuration(以显示它们已被考虑)。 这是我的重现步骤。 $ docker build . -t socket-test $ docker run -p 8000:8000 -c 1024 -m 4096M –privileged –ulimit nofile=9000:9000 -it test-socket:latest /bin/sh #> DEBUG=* npm start 高达约980个连接,我会得到像这样的日志: Connected to Socket! socket.io:client writing packet […]

Javascript和Mongoose for-loop在执行.find之前完成

我和我的伴侣需要获得每部电影的平均评分。 电影和评分是我们的MongoDB数据库的两个独立的集合。 所以,首先我们需要得到所有的电影。 之后,我们仍然需要的是在返回的电影列表的长度内循环遍历一个for循环。 在每一次迭代中,我们对当前在for循环的索引上的电影的Rating.find进行tt_number 。 在这一点上,它应该计算所有电影评分的平均值,并将结果存储在stringJSON中。 这是为每部电影完成的。 但是,我在这里包含的代码并没有这样做。 相反,for循环首先完成,然后它执行Rating.find三次,除了每次最后迭代的电影的tt_number 。 var express = require('express'); var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/Notflix', {useMongoClient: true}); var Movie = require('../model/movies.js'); var Rating = require('../model/ratings.js'); var jwt = require('jsonwebtoken'); var router = express.Router(); router.get('/', function (req, res) { var jsonString = '{"The average ratings":[]}'; var obj = JSON.parse(jsonString); var moviett_number; […]

当执行一个更复杂的GET时,Express JS会返回404,然后localhost / users(localhost / users / about)

我已经安装了Express框架,并使用应用程序生成器来创build基本的应用程序结构。 我正在尝试使用由安装程序生成的单独的路由文件users.js。 我在users.js中有这样的代码: var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res, next) { res.send('respond with a resource'); }); router.get('/about', function(req, res, next) { res.send('respond with a resource'); }); module.exports = router; app.js包含: var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); // view engine […]

从今天的date获取mongodb的项目列表

我想从我的MongoDB中获取今天的date列表。 我只是得到了我想要的结果,当我在下面的pushups.js文件中硬编码date: "date":"2017-10-26T07:09:36.417Z 。 这是我的代码。 在我的MongoDB文件 { "_id": { "$oid": "59f18ac290531423ecb3cb51" }, "date": "2017-10-26T07:09:36.417Z", "count": "25" } pushups.js : router.get("/pushupsToday", function (req, res) { var dateObj = new Date(); console.log(dateObj); db.pushups.find({"date": dateObj}, function (err, pushups) { if (err) { res.send(err); } res.status(200).send({"success": true, "result": pushups}); }); pushups.service.ts : @Injectable() export class PushupService { apiUrl = […]

节点js – 如何使用连接variables

我想创build一个数据库连接结构,允许多个数据库连接,但我有保存连接的问题,所以我可以在mssql.request() 。 我login窗体用户必须select哪个数据库要使用,所以我想在触发select框数据库与此代码工作正常。 LoginController.js setDB: (req, res) => { var connection = db.setDB(req.params.dbname); connection.then(result => { res.send(result); }); }, db.setDB const mssql = require('mssql'); module.exports = { setDB: (req, res) => { console.log('Prepare to connect to ' + req); return new Promise(function (resolve, reject){ var result = makeConnection(req); result.then(value => { console.log('result: ' + value); […]

在数据库中获取基于id的快速js url路由

我有包含articleID和articleDescription的文章表的sqlite数据库。 我正在使用expressjs作为服务器: app.get('/articleDetail/:id',function(req,res){ res.sendFile(path.join(__dirname+'/articleDetail.html')); var id = req.params.id; var query = "select * from article where articleID = " + id; }); 我想在数据库中显示基于其id的文章内容。 例如:当您在主页上select第5条时,会将您带到url…. / articleDetail / 5,并向用户显示内容。 我有两个问题的总结:我如何连接和我的数据库中的ID到url/路线的ID? 我如何使用express来显示正确的文章内容? 谢谢你的帮助。

如何利用Heroku的“postdeploy”脚本在预置的Heroku PostgreSQL数据库中创build表?

我正在Heroku上设置一个Web应用程序。 我希望别人能够自己使用它,所以我试图创build一个“部署到Heroku”button,以包含在我的存储库的自述文件。 跟着Heroku的文档1,2 ,我创build了一个app.json文件,概述了Herokuconfiguration应用程序所需的所有内容。 这是我的app.json文件的样子: { "name": "[title]", "author": "[author]", "description": "[desc]", "repository": "[https://github.com/[user]/[repo]", "logo": "[url]", "addons": [ "heroku-postgresql:hobby-dev", "wwwhisper:solo" ], "scripts": { "postdeploy": "node server/models/database.js" }, "env": { "TZ": "America/Los_Angeles" } } 正如你所看到的, postdeploy脚本应该调用database.js脚本,如下所示: const pg = require('pg'); const connectionString = process.env.DATABASE_URL; const client = new pg.Client(connectionString); client.connect(); client.query('CREATE TABLE IF NOT EXISTS table_name […]

在创build反应应用程序项目上进行快速身份validation

我正在开发一个带有Express后端的简单项目和一个使用create-react-app引导的前端: my-project |- server.js # backend entry point |- client/ |– package.json # client package.json |– index.js # client entry point 遵循一些指导( 如这样 ),我现在有一个localhost:3001上的后端服务工作,并且在localhost:3000上有一个工作的前端服务。 所有对/api/myapi的API调用都通过代理服务器成功redirect到端口3001。 在我的客户端package.json中: "proxy": "http://localhost:3001/", 现在,一切工作正常,但我有困难的时间使login工作。 事实上,当他访问/login url时,我无法将用户redirect到login页面。 在我的server.js文件里面: app.get('/login', function(req, res) { res.send('This is the login page'); }); 这是根本不工作,而URL /login给我一个空白页,而不是(它看起来不是在端口3001)。 由于这是我第一次使用Express,所以有人可以这样解释我为什么不工作?

NodeJS – 快速重载res.render()后面的页面

我使用MongoDB和NodeJS(使用Express Framework)。 我实际上做了什么: 在MongoDb中抓取一些数据 呈现这些数据。 我想做的事: 筛选特定项目。 过滤的结果都是正确的,但我的问题是,该页面将呈现两次。 我怎样才能防止呢? 我有一个主要的比赛,实际上看起来像这样: app.get('/main', auth, function(req, res) { getItems(req, res, function(results) { renderResults(req, res, results); }); }); 这是我的renderresult函数: function renderResults(req, res, results) { console.log("In Rendermethode arrived:"); console.log(results.items); res.render('pages/main', { offerings: results.items, ownUser: { id: req.session.user || "" }, filterObj: { isActivated: typeof results.filterObj !== 'undefined', filterFor: typeof results.filterObj […]

从节点发送文件到客户端进行下载

我正在使用浏览器的ajax调用,所以,在button上点击一个函数被称为路由'/文件' app.get('/filez',function(req,res){ var id = req.params.id; console.log('id is : ',id); var video = ytdl(url, { filter: (format) => format.container === 'mp4' }) .pipe(fs.createWriteStream('video.mp4')); res.download('video.mp4'); 现在,该文件正在被下载到服务器。 但我想要做的是发送文件,以便客户端可以从浏览器下载。 我不希望该文件被下载到服务器。 这是我使用button单击从浏览器发出的ajax请求。 我想获取该文件作为可以下载到客户端计算机的响应。 function myAjaxCall(){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState ===XMLHttpRequest.DONE && xhr.status ===200){ console.log('response has come',xhr.response); return xhr.response; } }; xhr.open('GET','/filez',true); xhr.send(); }; 解释:呃,不是。 […]