2017-03-01 59 views
0

我有一个场景,我在移动设备上有一个用户的图像和一些伴随数据。我使用亚马逊网络服务,想法是将图像存储在S3中,并将数据存储到数据库表中。最佳实践 - 节点JS错误处理+回退

我正在使用Node JS处理这些数据。

要将图像存储到S3上,我使用的是AWS SDK。 要将记录存储到MySQL中,我使用'mysql'NPM软件包。

的问题

什么是最好的实践方法,确保两项活动顺利进行,如果没有,确保没有发生。所以我们假设S3 putObject已经完成并且没有错误,但是MySQL插入超时。

解决方案

我可以想出很多 - 在过去所做的那样。这里真正的问题是我认为最好的做法,在研究堆栈溢出后,我似乎无法找到一个好的场景或最佳实践问题的答案:

“什么是最佳方式在单个函数涉及两个或更多(可能容易出错)的远程依赖关系时处理错误?“

我只是想知道如果有人有这个答案吗?

谢谢全部

+0

“最佳方式”是堆栈溢出时出现问题的短语。它引发了意见,特别是当你的问题是无限的时候。你也没有显示你过去做过的事情,所以我们不能告诉你是否给你一个你已经知道的答案。另见http://stackoverflow.com/q/7310521/215552 –

回答

0

好问题,最好的做法是使用异步触发。这仅仅意味着,不要这样做,或者直到事件触发器授予这样的动作。在节点自定义事件流中使用事件包是一种方法。只需手动创建一个事件,然后监听某个响应,然后触发相应的响应,这样可以确保只执行您想要执行的任务。最佳方式是使用promisies的概念,Promise为执行,编写,并与传统的基于回调的方法进行比较来管理异步操作。它们还允许您使用类似于同步try/catch的方法来处理异步错误。 尝试使用bluebird作为节点。 https://alexperry.io/node/2015/03/25/promises-in-node.html