使用ExpressJ时应在哪里定义DocumentClient?

时间:2019-05-17 02:25:49

标签: node.js amazon-web-services express amazon-dynamodb

我找不到想知道的答案。

在Expressjs中使用Mysql时,当我在后处理函数中声明MySQL连接时,每当ExpressJs服务器收到请求时,它将创建一个新连接。然后,当在处理服务器和数据库服务器之间建立最大连接数时,服务器将引发错误。

我想知道DynamoDB.DocumentClient()是否存在相同的问题?用DynamoDB进行操作的最佳方法是什么?

我应该具有如下所示的DocumentClient全局变量,还是可以将其保留在post / get函数中?

...
// DocumentClient is out of the post function below
const docClient = new AWS.DynamoDB.DocumentClient();

router.post('/loglogbaby', function(req, res){
    var params = { ... };

    docClient.get(params, function(err,data){...});

    req.json({response:"nonobaby"});
}
...

2 个答案:

答案 0 :(得分:2)

没关系,因为DynamoDB可以处理后面的 HTTP 请求,而不需要连接和缓冲池等。DocumentClient会在最后创建一个HTTP请求。它是一个简化low level api的库。 (See here)。

因此,基本上,每次创建对象时都要创建一个编程级对象。不是新的连接。而且创建对象很便宜。

答案 1 :(得分:0)

由于AWS DynamoDB已经是托管服务,因此创建DocumentClient对象的位置没有问题。 如果您为其创建全局对象,则这是一种很好的做法。

您可以找到here MySQL和DyanmoDB之间的比较。