Articles of javascript

JS Promise waitFor刷新令牌

情况很简单: 我有一个nodejs服务器(称为API-A)使用蓝鸟作为承诺处理程序。 我有一个客户端(浏览器),通过从另一个API(API-B)获取数据的API-A询问数据。 API-B可以是来自示例的气象服务,然后API-A将数据与其他数据聚合并将其发送回客户端。 情况是下一个:API-B需要一个具有1800秒的TTL的令牌。 因此,对于客户端的每个请求,我检查我的令牌是否过期。 我有这样的代码: function getActivities() { return this.requestAuthorisation() .then(()=>{ // some other code that is not interesting }) } 一切工作都很好,承诺的荣耀。 requestAuthorisation()检查令牌是否有效(下一个!!!),如果没有(我做一个请求API-B刷新令牌)问题在于:在这个时间之间,令牌已经过期以及获得的时间一个新鲜的,有时会发生。 如果1000个客户端同时询问这些,我将有1000个令牌对API-B的请求,这不是很酷。 我怎样才能避免呢? 我尽量避免使用cron-way,避免不必要的调用,问题是一样的。 我尝试创build一个跟踪令牌刷新状态的全局variables(boolean),但不可能find一种Promise.WaitFor(variables更改)的Promise.all无法使用,因为我处于不同的事件范围。 有没有办法排队,直到令牌刷新? 请帮忙 !

如何在login后请求用户数据,Node.JS

大家好,我是Node新手,请耐心等待。 无论如何,我目前正在为我的新节点应用程序的身份validation。 到目前为止,我有能力获得一切基本工作(login,注册,注销)。 我现在进入我的用户个人资料的设置页面,但我无法访问{{username}}或{{email}},例如,它保留空白或抛出一个错误。 我想知道如何让用户名,电子邮件和其他信息保留在会话中,或者一旦我的用户login后就可以访问它,以及以后如何向会话添加更多信息(这很重要,因为我需要做到这一点)。 这是我的代码: 注册(不包括validation) var newUser = new User({ username: username, email:email, password: password }); User.createUser(newUser, function(err, user){ if(err) throw err; console.log(user); req.flash('success_msg', 'You are registered and can now login'); login: router.post('/login', passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}), function(req, res) { res.redirect('/'); }); 我不确定我需要显示什么代码,但是如果你们需要看别的东西来帮助我,请告诉我。 我用快递,护照和车把来使用Node.JS。 谢谢!

io()和io.connect()之间的区别使用socket.io

我想知道之间有什么区别 var socket = io(); 和 var socket = io.connect(); 在我的脚本中使用socket.io(客户端) 谢谢!

Azure中的SQL Query DocumentDB由整数不起作用的函数

我在Azure函数中使用JavaScript语言。 当使用Cosmos DB作为input时,我无法通过整数作为variables来查询。 例如,我有以下几点: 使用Azure Cosmos DB作为我的input(公司)的function设置。 这是设置分区键为{partitionKey}和我的SQL查询作为SELECT * FROM c where c.random = {randomId} 。 在函数的代码中,我发送了以下作为我的testing数据: { "randomId": 1, "partitionKey": "prospect" } 有了这个,我没有得到任何结果。 我已经证实,我有一个random值为1的对象。 如果我要random添加一个值为"1" ,那么以下内容将起作用: { "randomId": "1", "partitionKey": "prospect" } 我已经用DocumentDB API和MongoDB API尝试了这个,因为这个绑定是内置到Azure函数中的,所以不要紧。 我用不同的数据集看到的趋势是,当您将整数参数绑定到查询或文档ID字段中时,查询不起作用。 任何想法如何解决这一问题? 编辑: 我已经证实这在C#中可用的文档。

ECMAScript / Node:是否可以将对象实例或上下文保存到文件系统?

是否有可能将一个对象(一个类的实例)保存到包括其内部值的文件系统中? 请不要标记为脱离主题。 我明白,即使这是可以实现的,也不是普遍的做法。 如果它是hacky也没关系。 我只是好奇,是否能够实现,因为这是星期天8点,我有一个漫长的一天。 function Node() { let x = Math.random() this.data = function() { return x } } let node1 = new Node() // save it to the disk somehow as node1 saveNode('node1', node1) // load it back from the disk into memory somehow, perhaps using eval?? let savedNode = loadNode('node1') console.log( savedNode.data(), […]

Node.js:Multer上传的承诺?

我有这个快速路由与multerfile upload。 上传完成后,我想将图像编码为base64并发送响应。 但是,当我这样做时,代码尝试执行base64编码之前,文件创build到文件夹。 编辑 :增加了存储和上传function const storage = multer.diskStorage({ destination: (req, file, callback) => { if (!fs.existsSync('./uploads')) { fs.mkdirSync('./uploads'); } let path = './uploads'; callback(null, path); }, filename(req, file, cb) { let fileExt = file.originalname.substring(file.originalname.lastIndexOf('.')).toLowerCase(); if (!imageFilter(fileExt)) { return false; } else { cb(null, file.originalname); } }, onError: function (err, next) { console.log('error', err); […]

如何在Node.js中对promise做recursion请求?

我需要从API读取数据,每个查询只得到100个结果,从哪里获得下一个100个时间戳。 我设法用下面的代码一个接一个的做多个请求,但由于某种原因,它永远不会回到最初的承诺。 它卡在“没有更多的订单取”。 app.get('/test', (req, res) => { const getOrders = (from) => { return request(mcfApiUrl + "changes?created_after_ts="+from+"&key="+mcfKey) .then(xml => convert.xmlDataToJSON(xml,{explicitArray:false,mergeAttrs:true})) .then(orders => checkForMore(orders)); } const checkForMore = (orders) => { return new Promise((resolve, reject) => { if (orders['Orders']['orders'] == 100){ getOrders(orders['Orders']['time_to']); console.log("Fetched "+ orders['Orders']['orders']+" orders"); console.log("More orders available from: "+moment(orders['Orders']['time_to']*1000).format()); } else { console.log("Fetched […]

DynamoDB Local在closures实例后删除数据

我正在为我的应用程序使用DynamoDB Local,并且每次closures实例时都会删除所有示例数据。 有谁知道为什么发生这种情况? 我试图查看它,但我没有看到其他人有这个问题。 我已经使用了dynamodb的可下载版本,并使用这个命令: dynamodb_local_latest baopham$ java -Djava.library.path=./DynoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -inMemory启动和实例。 我错过了什么? 谢谢。

无法在NodeJS中下载页面

我想在NodeJS中下载页面( https://www.csfd.cz/tvurce/65871 ),但是我只能得到随机数据。 }Ms F +i" ) Jْ; e 7 KM0 LƩ ] Yg b Ow7U J # K 9 L 我以为这只是错误的编码,但即使大小是错误的(下载页面有44K,而这个文件只有19K。更令人惊讶的是,简单的下载python的工程很好。 Python代码: import requests url = "https://www.csfd.cz/tvurce/65871" r = requests.get(url) with open('pyth.txt','wb') as handle: handle.write(r.content) JavaScript代码: const request = require('request-promise') const fs = require('fs') request('https://www.csfd.cz/tvurce/65871').then((html) => { fs.writeFileSync('output.html', html) }) 我也尝试了像request.get等附加方法等,但仍然是相同的结果。 你能告诉我我做错了什么吗?

无法在Nodejs中访问db结果,它总是返回null

var robject=[]; async.waterfall([ function (callback) { for(var i in serial){ Router.find({},{r_serial_no:serial[i]},function (err,routerData) { robject = robject.concat(routerData); }); } console.log('Robject= '+robject); //THIS RETURNS NULL callback(null, robject); }, function (blogs, callback) { res.render('index', {dispatched_data:dispatched_data }); callback(null, 'Ended..' ); } ], function (err, result) { console.log(result); }); 这是我的瀑布模型,在这里我需要从schema.find方法到该方法的外部访问robject 。 但它总是返回null ..如何访问?