Tag: node.js

Socket.io – 通过https从客户端连接到服务器

我在我的虚拟服务器(Ubuntu)上创build了一个socket.io聊天应用程序,它作为systemd服务运行,并且正在运行。 我的server.js位于: /var/www/vhosts/mywebpage.de/w1.mywebpage.de/chat/ server.js看起来像这样: const io = require('socket.io')(3055); io.on('connection', function(socket) { // When the client emits 'addUser', this listens and executes socket.on('addUser', function(username, room) { … }); // When the client emits 'sendMessage', this listens and executes socket.on('sendMessage', function(msg) { … }); // Disconnect the user socket.on('disconnectUser', function(username, room) { … }); }); 在我的网站(https),我尝试连接如下: <script […]

是否有预先阅读的mongoose事件?

每次从模式读取时我都想运行一个方法。 像这样的东西: var Schema = mongoose.Schema; var exampleSchema = new Schema({ views: { type: Number } }); exampleSchema.pre('read', function(next) { this.views++; next(); }); 或者,如果有更好的方法来做到这一点,请让我知道。 谢谢。

电子应用程序没有在系统启动时自动打开

我已经创build了一个electron app并保存在C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\文件夹,以便它将立即执行时,用户login到系统。 除了一个问题,一切正常。 我知道有一个像npm-auto-launch的替代scheme可以在系统启动时执行电子应用程序。 但是,我更喜欢把它保存在上面提到的文件夹中。 问题:当系统处于desktop mode ,应用程序正在运行并在login时立即打开。 但是,当用户从desktop mode切换到tab mode ,应用程序图标显示在task bar但除非用户手动点击图标,否则应用程序不会打开。 我GOOGLE了很多,但没有find任何解决这个确切的问题。 任何支持将不胜感激。 提前致谢。

访问MongoDB属性不能按预期方式工作

这是我的模式 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var messageSchema = new Schema({ status: {type: String, default: 'Pending'}, latestUpdate: Date, createdAt: {type: Date, default: Date.now} }); module.exports = mongoose.model('Requests', messageSchema); 这是我如何打印到控制台的属性: hosSchemaModel.find(function(err, hosSchema) { if (err) { console.log('inside error') // return res.send(err); } else { console.log(hosSchema) } }); 在上面的代码中, console.log(hosSchema)打印下列内容: console.log()的结果 当我尝试访问hosSchema.status , undefined被打印到terminal。 […]

Where子句在三层嵌套包含失败

我有四个modelDBList: AlarmsDB,MonitorSpotDB,MonitorGroupDB,UserDB 这些modelDB有参考清单: AlarmDB.belongsTo(MonitorSpotDB); MonitorSpotDB.belongsTo(MonitorGroupDB); MonitorGroupDB.hasMany(MonitorSpotDB); UserDB.belongsToMany(MonitorGroupDB, { through: MonitorGroupUserDB}); MonitorGroupDB.belongsToMany(UserDB, { through: MonitorGroupUserDB,}); 现在我想获得相关用户的警报,所以我使用sequelize编写代码: public async getAlarms(limit: number, offset: number, whereQuery: any, whereUser: any): Promise<{ count: number, rows: Alarm[] }> { let alarms = await AlarmDB.findAndCount({ limit: limit, offset: offset, order: [ ["createdAt", "desc"], ], where: whereQuery, include: [ { model: MonitorSpotDB, as: "monitorSpot", […]

用xml2jsparsing

我是node.js新手,需要parsingXML 。 在JS中,我只是使用DOMParser并使用getElementsByTagName来获取我想要的值。 我刚刚切换到节点,并正在使用xml2js (愿意考虑替代品)。 我一直无法弄清楚如何parsing通过响应得到我所期待的。 代码如下: function parseBody(body){ var parseString = require('xml2js').parseString; var xml = body parseString(xml, function (err, result) { console.dir(result); }); 这里是传递给函数的XML: <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:int=\"realURLHere"> <soapenv:Header/> <soapenv:Body> <int:readResponse> <response> <request>?</request> <cust> <fName>?</fName> </cust> </response> </int:readResponse> </soapenv:Body> </soapenv:Envelope> 这是我的function的输出: { 'soapenv:Envelope': { '$': { 'xmlns:soapenv': 'http://schemas.xmlsoap.org/soap/envelope/', 'xmlns:int': 'realURLHere' }, 'soapenv:Body': [ [Object] ] […]

Python请求:从Nodejs HTTP服务器请求突然缓慢

我有一个NodeJS HTTP服务器,显示一个JSON文件,每秒更新多次。 样本数据: { "MainText": [{ "field1": "text", "field2": "text", "field3": 1234 }, { "field1": "text", "field2": "text", "field3": 1234 }, { "field1": "text", "field2": "text", "field3": 1234 } ] } 通常在一段时间之后,这个JSON中这样的条目的数量增长到约200k或更多。 我必须将整个JSON导入一个pandas数据框,我正在使用以下方法: df = pd.DataFrame(json.loads(requests.get(url).text)) 通常这大概需要0.3秒。 但是对于我来说没有任何理由,在几个请求之后,它开始花费接近4秒(几乎)相同的固定大小的JSON。 在发出请求时,CPU或RAM的使用量没有变化。 如果我重新启动NodeJS服务器,则问题会暂时解决,但稍后会回来。 我是否需要closures与HTTP服务器的连接? 我希望180K行的文本是不是太多的请求从服务器快速获取? 我应该寻找一种将JSON数据加载到pandas数据框的更有效的方法吗?

为什么要做更小的arrays需要更长的时间?

这是一个从1 to n的数组的函数: function MakeList(n){ return Array.from(Array(n).keys()).map(function(x){return x+1;}); } 我计时,所以我可以find这个数组的最快方法: console.log(n); console.time("MakeList"); var ar = MakeList(n); console.timeEnd("MakeList"); 但输出是如此啰嗦! 1 MakeList: 0.897ms 2 MakeList: 0.135ms 5 MakeList: 0.048ms 为什么用1的长度比5长的arrays需要大约20倍? 任何build议最快的方式将不胜感激!

在Array.map函数中使用await

在迭代数组之前,我需要等待一个asynchronous函数完成,我需要等待parsing的asynchronous函数如下: static async sendEmail (from, to, subject, text) { return new Promise((resolve, reject) => { let message = { from, to, subject, text }; AMMailing.transporter.sendMail(message, function (err, response) { if (err) { reject(err); } else { resolve(response); } }); }); } 这是我在数组中迭代的方式的代码,并试图等待它解决再次迭代之前: static sendEmailInQueue (queue) { queue.map(async (person, index) => { console.log('sending email to: ', […]

无法从任何提供程序nodemailer aws加载凭据

我一直在努力寻找一个解决我的问题一段时间。 我一直在尝试使用nodemailer和nodemailer-ses-transport。 这里是nodemailer代码: var cfg = require('../config/config'); var nodemailer = require('nodemailer'); var aws = require('nodemailer-ses-transport'); var transporter = nodemailer.createTransport(aws({ accessKeyId: cfg.KEY, secretAccessKey: cfg.SKEY, default_region: cfg.REG, ratelimit: 5 })); router.post('/signup', function(req, res, next){ passport.authenticate('local.signup', function(err, user, info) { if (err) { return next(err); } // Redirect if it fails if (!user) { return res.redirect('/signup'); } req.logIn(user, […]