Articles of node.js

我如何pipe理Node.jsasynchronousvariables作用域?

我有以下代码来填充我的testing数据库。 目标是将每个子文档之后的父文档保存到父文档中,以便对其进行引用。 function saveRecipe(ingredients, directions, recipe, done) { var ingredientSaveTasks = createSaveTasks(ingredients) var directionSaveTasks = createSaveTasks(directions) async.parallel([ (callback) => { async.series(ingredientSaveTasks, callback) }, (callback) => { async.series(directionSaveTasks, callback) } ], (err, results) => { recipe.ingredients = results[0] // The returned ids for each ingredient recipe.directions = results[1] // The returned ids for each direction recipe.save(done) […]

Socket.io – 广播给不同权限级别的用户的策略

使用socket.io将事件和数据广播给其他监听器是很简单的,每个人都可以看到数据。 但是,当每个用户只能看到属于他们的数据时,有没有一些策略可以使用? 例如,我们有一个订单系统。 在仪表板上,一些用户可以根据访问级别查看所有订单。 所以如果一个订单被一个用户更新,我可以把这个事件广播给所有其他的用户,而不必为仪表盘上的每个窗口检索新的数据。 所以也许一个例子就像客户端的socket.send('ordersUpdated', data) ,我认为节点服务器可以捕获它,并将数据发送到其他套接字侦听ordersUpdated事件。 但是用户只能看到他们自己的订单的情况呢? 我不能向他们广播相同的数据,因为这个级别的每个用户只能看到他们自己的数据。 如果他们的一个订单是由一个可以看到所有订单的用户修改的呢? 他们的仪表板也需要更新,但他们不能接收同样的广播数据。 有什么特别的方法可以解决这个问题吗? 一个想法,虽然我认为不是一个好主意,但只是发送一个事件,说一些更新的事情,这将导致他们从服务器重新获取数据。 为了提供更多的细节,我也使用Angular和Laravel。

自动获取Docker容器中的主机名

我们在托pipe在Amazon EC2实例上的Docker容器中运行NodeJS应用程序。 至 为了使用Datadog监控Node.js应用程序,我们使用datadog-metrics库并将其与我们的应用程序集成。 我们基本上需要将下面的Javascript代码保存到一个名为example_app.js的文件中 var metrics = require('datadog-metrics'); metrics.init({ **host: 'myhost', prefix: 'myapp.'** }); function collectMemoryStats() { var memUsage = process.memoryUsage(); metrics.gauge('memory.rss', memUsage.rss); metrics.gauge('memory.heapTotal', memUsage.heapTotal); metrics.gauge('memory.heapUsed', memUsage.heapUsed); metrics.increment('memory.statsReported'); } setInterval(collectMemoryStats, 5000); 虽然,我们能够成功发布度量标准,但是我们想知道这是否可以自动化。 我们希望将其构build到Docker镜像中,因此需要自动获取主机名,至less可以使用Docker主机名。因为直到现在我们手动指定“myhost”和“myapp “值手动。 将AWS实例主机名值读取到%myhost中的更好方法?

JavaScript和Node.JS – 无法理解为什么variables在callback中是未定义的

所以我开始学习NodeJS,并创build一个简单的HTTP服务器,如“Node Beginner”中所述。 我有一个Router对象,它包含一个路由table ,它将path名映射到要调用的函数。 这是通过一个关键值对象来实现的。 现在,我的Server对象有一个指向上述对象的router成员。 (对于松耦合,保持路由器和服务器分离),以及start()服务器的start()方法。 如下所示: Server.prototype.start = function() { var myRouter = this.router; http.createServer(function(req, res) { var path = url.parse(req.url).pathname; res.write(myRouter.route(path, null)); res.end(); }).listen(80); }; 现在我创build了一个myRoutervariables,它指向Server对象的router引用,然后在createServer函数中使用它的route()函数执行路由。 此代码工作。 但是,如果我省略创buildmyRoutervariables部分,并直接在createServer执行路由,如下所示: res.write(this.router.route(path, null)); 它说this.router是不确定的。 我知道这与范围有关,因为提供给createServer的函数稍后在接收到请求时执行,但是,我无法理解创buildmyRouter如何解决此问题。 任何帮助将不胜感激。

string有隐藏字符,无法validation,

大约两个小时前我问了一个问题 [不需要看到这个问题,只是参考] 使用node.js存储图像会导致错误 给出的解决scheme与我的代码字面上是一样的,我试图find我的代码和他的代码之间的区别,看看他做了什么修改,使其工作,但没有任何修改。 所以我想在网上尝试它的IDE,我试着c9.io在线IDE来检查它。 但突然间,在我的本地崇高编辑没有显示的在线c9.io IDE中,有些东西显得有点奇怪。 下面的图片是我在崇高中看到的文字,没有任何区别。 – 下面是我在c9.io中find的文本。 正如你可以清楚地看到,在c9.io JavaScript编辑器中新出现了two dots 。 我无法看到在正常的文本编辑器中的区别,然后在网上不同的检查器也显示错误。 下面是两个string之间隐藏差异的文本 AybükeArslan‌​_(3).JPG AybükeArslan_(3).JPG 在https://www.diffchecker.com/上复制粘贴上面的文字后,就可以看到上面两个string的区别了 任何人都可以告诉是什么原因,以及如何通过JavaScript函数从string中删除不需要的字符。 在我的服务器上已经有5个小时的问题了。

NPM软件包开发 – 如何在软件包安装后执行生成命令?

如何安装我的软件包后生成生成文件夹? 我做到了这一点: "scripts": { "build": "babel ./src –out-dir ./build" } 但是,当其他用户安装包npm不build立。 我怎样才能安装后执行生成命令?

在协会中添加帮助

所有,下面的附加是一个SQL查询,我用它作为一个原始查询在续集中,它工作正常。 现在我正在尝试将它设置为mixin关联,但不能这样做。 有没有通过帮助文件,但不能完全掌握的细节。 也许它只是我。 无论如何,下面附加的是我试图返工的查询。 如果有人能抛出一些指针或有一些样本来帮助我重做这个,会感激不尽? 提前致谢。 select cust.*, cust_role.id, cust_role.rolename, role.roletype from customer cust, customer_roles cust_role, roles role where cust.id = cust_role.user and cust_role.role = role.id and cust.id like '0123456' //customerId 表关系 customer_roles has a foreign key to both roles and customer tables customer to customer_roles (1 to many), customer_roles to roles (many to […]

反应js套接字io不工作在局域网wifi

所以我有一个完成的工作在我的机器上的nodejs + socket.io + reactjs项目。 我可以在我的机器上打开不同的选项卡或浏览器,并对其进行testing和工作。 但是我想在我的局域网内的其他机器上testing它。 当我通过其他机器上的无线networking连接到我的networkingIP地址,我可以看到页面。 但是,socket.io不起作用。 当我打开控制台(其他机器),这是我看到的错误: GET http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = LMXV0Uf net :: ERR_CONNECTION_REFUSED 这是我的节点app-server.js: app.use(express.static('./public')); app.use(express.static('./node_modules/bootstrap/dist')); var server = app.listen(3000); var io = require('socket.io').listen(server); 我该如何解决这个问题? 还有什么build议的方式来部署在生产中,使socket.io将工作。

如何在本地存储用户信息,当他使用Facebook Messenger的聊天机器人?

我跟着Facebook的文档,并设置我的Messenger软件。 它正常工作,只是我在使用它,但我不知道如何在本地创buildvariables和存储信息,以便我可以获得有关每个用户的个人信息。 例如。 如果我要求他们input他们的电话号码,我应该如何保存它,以便在新用户来电时input他的号码(如果variables是全局声明的话),也不会被覆盖。稍后使用它。 我使用了Node JS,并遵循了他们在文档中提到的步骤。

OpenWhisk从动作调用watson文本到语音动作

我正尝试从OpenWhisk操作中调用包含在Watson系统包(文本到语音)中的操作。 我已经绑定了服务,并设置了凭据,所以从CLI中我可以看到 wsk list entities in namespace: xxxxxx packages /xxxxxx/myWatson private binding 这是我的OpenWhisk操作: function main(param) { //code here for my action. At the end, I invoke the text to speech if (…) { textToSpeech(param.text); } else { return whisk.error(error); } return whisk.async(); } function textToSpeech(text){ whisk.invoke({ name:'myWatson/textToSpeech', parameters:{ payload: text, voice: 'en-US_MichaelVoice', accept: 'audio/wav', encoding: […]