Articles of 承诺

node.jserror handling。 将错误信息存储在err中,而不是自动将其打印到控制台

在下面的代码中,我创build了一个错误 db.collection('deals').findOne({"_id":"8976889"}) .then(function(dealsInfoResult){ throw Error("THIS IS THE ERROR"); return (dealsInfoResult); }) .catch(function(err){ console.log("ERRRR: " + err); res.send(err); }) }); 发生错误后, err没有任何错误信息,其为空。 而是“错误:这是错误”被打印如果有任何错误,我想错误存储在err中,以便我可以用我的方式处理它。

将从promise返回的数据分配给一个variables对象

我有以下代码从AWS S3中检索对象。 我将如何将从承诺返回的数据分配给files对象? 我想能够将filesvariables传递给另一个方法,然后我想访问数据。 var getFiles = function getFiles(files) { return Promise.all(files.map(function (file) { return new Promise((resolve, reject) => { var params = { Bucket: 'my-bucket', Key: file.key }; s3.getObject(params, function (err, data) { if (err) reject(err); else { resolve(data); } }); }); })); }; var fileNames = ['test.jpg', 'background.jpg']; var files = fileNames.map(function(fileName) { […]

stripe angular错误:Uncaught(在promise中):TypeError:无法读取未定义的属性'stripeService'

我目前正在尝试实现条纹到我的angular4 nodejs应用程序,但我有点卡住了,当我试图通过我的服务发送卡令牌到我的服务器处理与条带相关的请求。 这是我得到的代码: stripe.component.html: <form role="form" id="payment-form"> <div id="card-element"></div> <div id="card-errors" role="alert"></div> <button type="submit" (click)="addCard()">Submit Payment</button> </form> stripe.component.ts: import {Component, OnInit} from "@angular/core"; import {WindowRef} from "../social/windowRef"; import {StripeService} from "./stripe.service"; @Component({ selector: "app-stripe", templateUrl: './stripe.component.html', styleUrls: ['./stripe.component.css'] }) export class StripeComponent implements OnInit { elements: any; stripe: any; style: any; card: any; constructor(private stripeService: […]

节点承诺不推送所有的数据到数组

我正在使用AWS Node SDK来完成以下任务 – 获取地区 获取每个区域的集群ARN 获取经过筛选的ECS群集列表。 获取过滤群集的服务 我要脱钩的部分是第4步,列出每个群集的服务。 从本质上来说,每个集群列出服务的调用每个响应只能返回10个项目,因此会recursion调用该函数以查看是否存在另一个页面标记。 每个响应被推送到一个数组。 然后有一个最后的Promise.all打印出所有的答复。 问题是只有最初的调用被捕获,而不是任何下一个令牌的recursion调用。 任何帮助将非常感激 :) function getLiveCluster() { var liveClusterName = 'xx1-app-ecs' // Filter out the required clusters clustersAry.forEach(function(cluster) { if (cluster && cluster.clusterArns && cluster.clusterArns.length > 0) { cluster.clusterArns.forEach(function(clusterArns) { if (clusterArns.indexOf(liveClusterName) > -1) { var serviceParams = { cluster: clusterArns, maxResults: 10, nextToken: […]

MongoDB承诺和结果处理

目前我正在学习nodejs中的Promise,现在我在处理mongoDB查询和承诺方面有点困难。 以下是我在下面的示例代码。 db.collection(module.exports.collectionName).find( {"$or" :[{"email":req.body.email},{"username":req.body.username}]},function(err,success){ if (err) {throw new Error("Error in accessing DB – check new user"); } return success; }).toArray().then(function(value){ console.log(value.length); if (value.length == 0) { db.collection(module.exports.collectionName).insertOne(insert,function(err,success){ if (err) {throw new Error("Error in accessing DB – insert new");} return success; }).then(function(value){ return resolve("Success") }).catch(function(value){ return reject("Error happened during accessing DB, please contact the Admin […]

如何在nodejs中使用promise执行两个mysql查询?

这里是我要实现的,我想有一个从我的node.js服务器返回的JSON数据是基于第一个mysql查询(数组JSON数据) 如果我只是想执行两个mysql查询,我只是启用multipleStatements:true,那么代码将是这样的: app.post('/ product',function(req,res){ connection.query('call getProductList; call rowCountTotal', function (err, rows, fields) { if (!err) { var response = []; if (rows.length != 0) { response.push({ 'result': 'success', 'data': rows }); } else { response.push({ 'result': 'error', 'msg': 'No Results Found' }); } res.setHeader('Content-Type', 'application/json'); res.status(200).send(JSON.stringify(response)); } else { res.status(400).send(err); } }); }); 比数据将显示两个数组中分离的两个JSON,但我想在这里构build的是一个JSON与多个数组JSON数据,看起来像这样: 我想要的示例JSON: […]

承诺连锁似乎不会继续

我试图让我的承诺链在我的快递员工作,但似乎无法弄清楚为什么它不会工作,即使我以前这样做。 我添加了许多日志来跟踪停止,并且在validationparsing后似乎停止,不会继续 诺言: router.post('/auth/token', function (req, res) { var schema = require('./schema/token.js'); var data = { username: req.body.username, password: req.body.password }; new Promise(function (resolve, reject) { logger.info(`Validating request..`); return validator.validate(schema, data); }).then(function () { logger.info(`Getting token..`); return authentication.getToken(data.username, data.password); }).then(function (result) { logger.info(`Received token..`); res.send(result); }).catch(function (err) { logger.info(`Unable to receive token..`); res.send(err); }) }) […]

levelup:get()需要键和callback参数 – 没有Promise?

levelup文档声称get() , put()等将返回一个Promise如果调用没有callback: https : //github.com/Level/levelup#promises 我有以下代码: db.get(gameName).then(JSON.parse).then( 但我的then()函数永远不会被调用。 该代码运行时不会崩溃,但在控制台中收到以下消息: get() requires key and callback arguments 我错过了什么吗? 也许依赖? 我愿意把get()和put()放在我自己的Promise中,但是如果它已经存在,重写这样的function似乎很愚蠢。

在Promises和函数之间传递variables

我有个问题。 我必须做两个不同的SOAP调用才能检索两张凭证列表,然后使用这些列表对他们进行检查并完成一些工作。 我把这两个调用放在不同的Promise函数中,因为我想在调用返回结果之后在列表中启动这个工作。 这是第一个承诺: let vouchers = function(voucherTypeList){ return new Promise(function(resolve,reject){ const categoryId = "1000"; let args = { "tns:CategoryId": categoryId }; var header = { "tns:Authenticate": { "tns:UserName": soapVoucherWsdlUsername, "tns:Password": soapVoucherWsdlPassword } }; // let voucherTypeList; voucherClient.addSoapHeader(header); voucherClient.GetVouchers(args, function(err, result) { console.log("DENTRO GET VOUCHERS"); if (err) { console.log(err); writeResponse(res, '200', err); } else { […]

NodeJS + EJS + Promise:页面直到履行承诺才显示

我从承诺中的Web服务中检索数据,并使用EJS进行显示。 问题是HTTP页面不会显示,直到承诺履行,这是有道理的,因为我叫“内部”渲染。 有没有办法让HTTP页面显示没有“数据”,并在webService调用完成时显示“数据”? var webService = new webService(); webService.GetData("https://somewebservice.com") .then( (result) => { let options: Object = { "data": result }; this.render(req, res, "index", options); });