如何在forEach中调用promise?

我有事件stream向下面的程序,所以基于事件的价值我触发不同的承诺,所以我想检查是否它的好主意内使用承诺forEach。 用下面的代码,当我有事件element.variables.caseIdFound值永远不会满足条件。 任何想法什么是执行错误我是相当新的承诺。 任何与以下代码的例子高度赞赏。 camunda.js var caseIdFound; var processingCompleted; function checkTicketNum(element) { var EventCasesID; var event; var ticketNumber; var CasesID; var insertIDBEvents = []; var event; return new Promise(function(resolve, reject) { event = JSON.parse(element.variables.event.value); ticketNumber = event.body.raw.tkt; CasesID = event.body.raw.CasesIDuuid; controller.insertCase(ticketNumber, function(err, response) { event.body.raw.LogIDuuid = generateUUID(); if (response.length == 0) { completeTask('TicketNotFOund',element.id); } else […]

是否有可能使一个asynchronous函数返回一个mongoose查询而不是一个承诺?

build立 假设我们有一些文件Foo和Bar 。 Foo有一个name字段,可以用来识别除了使用文档_id以外的其他文档。 Bar包含对Foo文档的引用。 const fooSchema = new mongoose.Schema({ name: { type: String, unique: true } }); const Foo = <any>mongoose.model<any>('Foo', fooSchema); const barSchema = new mongoose.Schema({ foo: { type: mongoose.Schema.Types.ObjectId, ref: 'Foo' }, date: Date }); const Bar = <any>mongoose.model<any>('Bar', barSchema); 现在假设我们有一个Foo文件的name ,但不是它的_id 。 我们想find所有引用Foo文档的Bar文档。 所以我们编写一个函数,首先find具有给定name的Foo文档,然后使用它来查找Bar文档。 barSchema.statics.findBarWithFooName = async function(name: string) { let […]

如何使terminal命令等待另一个完成?

我在我的package.jason中有这个命令: "chrome": "node –max_old_space_size=10000 build/dev-server.js –arg testus | node –harmony test/e2e/puppeteer/index.js", 我想在使用我的自动化testing工具之前构build我的应用程序。 但是现在两个命令同时启动。 如何做第二个等待第一个完成?

promis中的Nodejs事件不能解决

当我打电话pdfCreate ,一个事件被加载,工作正常。 然后createIncidentReport被包含的服务调用,这工作正常。 一旦将PDF写入磁盘,将调用pdfStream.on('finish') ,这可以在控制台上正常工作。 日志被写入,但是然后邮件服务不被调用。 我应该如何解决这个承诺? function pdfCreate(incidentId) { Incident.findById(incidentId) .then(incident => pdfService.createIncidentReport(incident)) .then(() => mailservice.sendPdfCreatedMail(incident)); } function createIncidentReport(incident, res) { return new Promise((resolve, reject) => { let pdfStream = fs.createWriteStream(settings.PDF.DIRECTORY + incident.id + '.pdf'); incidentReport.pipe(pdfStream); pdfStream.on('finish', function () { console.log('finished writing pdf') resolve(); }); } } function sendPdfCreatedMail(incident) { console.log('mail'); let message = […]

如何pipe理多个节点项目?

我们正在使用3个不同的节点项目: 项目1 , 项目2和项目3使用react和webpack 。 所有3个项目都在3个不同的仓库中。 项目1和项目2是独立的,但项目3需要项目1和项目2的压缩文件,并作为devDependencies(node_modules)放在项目3中。 现在,我们需要在Project 1或Project 2中进行更改,以便在Project 3中使用新的zip文件。 为了debugging,我们需要更改Project 1或Project 2中的代码,然后使用npm pack一个压缩文件,然后在Project 3中更新该压缩文件并停止Project 3的生成 ,然后再次卸载并安装该压缩文件,然后运行项目3再次。 另一个更快一点,一个解决scheme是使用npm包构build项目1或项目2 ,然后复制生成的lib文件,然后将其复制到项目3运行实例中的/node_modules/Project 1(or2)/lib文件夹中。 有没有更好或更快或更方便的方法来pipe理所有这些项目? 请不要build议lerna 。 莱纳是一个伟大的工具,但它需要改变的架构是不可行的。

Lambda函数失败无法导入模块“索引”

错误: Unable to import module 'index': Error at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object.<anonymous> (/var/task/node_modules/slack-incoming-webhook/lib/index.js:3:19) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) 通过看起来这个我的代码是不是问题这是一个问题,松散的传入webhook节点模块,但是一块有问题的代码是这条线,看起来完全正常。 var SlackClient = require('./client'); 我已经尝试了4个不同的包(request,http,node-webhooks和slack-incoming-webhooks),并且它们都在节点模块中都失败了。 我非常困惑,因为我可以让代码在我自己的计算机上和Amazon Linux AMI EC2实例上运行(运行相同的节点版本) 所有的代码被压缩并使用aws-cli发送到lambda,并且我已经在lambda上部署了node.js代码,没有任何问题(alexa技能)。 我已经试过在ec2实例npm安装,我已经尝试了几个不同的包,我已经得出结论必须有某种configuration错误的lambda,但我找不到什么。 有人能指点我吗? 这里是我的代码,如果有人也好奇拉姆达触发器是aws iotbutton。 const slack = require('slack-incoming-webhook'); const send […]

调用ramda组成nodejs类

我有以下方法skipLoggingThisRequest在我试图testingnode js类。 该方法应该返回true或false ,根据请求中的path,使用ramda compose来获得该值。 但是在我的testing中,无论我在请求对象中设置了什么path,我的skipLoggingThisRequest总是返回true。 我在这里错过了什么? 我的课: import { compose, filter, join, toPairs, map, prop, flip, contains, test, append } from 'ramda' import { create, env } from 'sanctuary' import { isEmpty, flattenDeep } from 'lodash' import chalk from 'chalk' import log from 'menna' class MyClass { constructor (headerList) { this.headerWhiteList = flattenDeep(append(headerList, [])); […]

JS与Python的字节数组编码

我试图将字节数组转换为string,然后通过套接字发送到远程服务器。 我已经成功地在Python原型的代码,并试图将其迁移到Javascript 。 由于某种原因,这两种语言之间的最后一个字符有差异。 Python代码 def make_checksum(data): num = 0x00 for num2 in data: num = (num + num2) & 0xFF return num data = [0x56, 0x54, 0x55, 0x3E, 0x28, 0x00, 0x08, 0x00, 0x03, 0x01, 0x46, 0x00, 0x00, 0x00, 0xC0] message = bytearray(data + [make_checksum(data)]) 使用Javascript function checksum(data) { let res = 0x00 for (let […]

节点js – mongoose不能访问包含在包中的数据库

我已经开始在平均技术方面的工作, 我有一个模块myModule; 它具有访问数据库的路由,服务,模型; 我创build了另一个项目,myAnotherModule在一个单独的目录,并有“npm链接”编辑到myModule; 虽然我尝试在myAnotherModule中使用mongoose,但无法使用正确的凭据访问数据库; 在myAnotherModule中的以下代码中, var db = mongoose.connection.db; var mongoDriver = mongoose.mongo; var gfs = new grid(db, mongoDriver); 它没有findmongoose.connection.db和db是未定义的; 如果我在myModule中使用这些行,那么代码工作正常; 为什么myAnotherModule无法findmongoose.connection.db? npm链接如何工作? 我会感谢在这方面的任何帮助 -Indu

Node.js在哪里得到它的时区,我怎样才能全局设置它?

我正在运行Windows 10 Professional,并将我的时区和区域设置设置为布里斯class/澳大利亚(UTC + 10:00)。 此外,我正在为我正在构build的应用程序在我的系统上运行Node.js。 我在Node.js中运行以下内容: var x = new Date(); console.log(x); 它返回了以下内容: 2017-09-07T23:42:33.719Z 注意date时间string结尾的Z? 这代表祖鲁时间。 (UTC + 0) 我认为这是在没有指定时区时在Node.js中默认设置的。 如何在Node.js中全局指定时区,以确保所有的date对象都正确返回?