我使用NodeJS的aws-sdk
与DynamoDB表进行交互。这是我第一次看到DynamoDB。
使用getItem()
或updateItem()
等调用时,数据结构包含类型,如下所示:
{
'a': { S: 'My string' }
}
有没有办法在没有类型的情况下传递和接收这些对象..?所以......
{
'a': 'My string'
}
或者,已编写的任何辅助函数都会将对象转换为此格式的对象..?
const data = dbToObj({ 'a': { S: 'My string' } })
// { 'a': 'My string' }
所以我可以在填充call params时转换为它,并在接收数据时从它转换。
尽量避免访问我的数据,如:
const myData = data.Item.something.M.somethinElse.M.qwerty.S
我知道我可以自己写一些东西,只是想知道是否有人知道已经可以使用的功能/选项。我找不到任何东西。
答案 0 :(得分:4)
发现这个:
正是我在寻找的东西。
安装:unwrap({ 'a': { S: 'My string' } })
提供aws-sdk
和awslabs
方法,用于与普通对象进行转换。
<强>更新强>
我现在也发现了这个:AWS.DynamoDB.DocumentClient
,它是for
的一部分。
文档客户端通过抽象出属性值的概念,简化了在Amazon DynamoDB中处理项目的过程。此抽象注释作为输入参数提供的本机JavaScript类型,以及将带注释的响应数据转换为本机JavaScript类型。
更新2
这是由亚马逊在for phrase in set(phrases).intersection(text.split()):
...
github页面下进行的:
Amazon DynamoDB Automarshaller
此库提供Marshaller类,可将本机JavaScript值转换为DynamoDB AttributeValues,然后再返回。它设计用于处理集合,映射和迭代等ES6功能,并且可以配置为支持仅由JavaScript支持的数据类型(例如空二进制缓冲区)或Amazon DynamoDB支持的数据类型(例如任意大小的数字)最小的权衡。
这是DynamoDB DataMapper For JavaScript套餐的一部分。
答案 1 :(得分:0)
Dynogels提供了一种更清晰的处理方式,无需担心类型。 我们在生产中使用它并且没有任何问题。
https://github.com/clarkie/dynogels
Account.create({email: 'foo@example.com', name: 'Foo Bar', age: 21}, function (err, acc) {
console.log('created account in DynamoDB', acc.get('email'));
});
它是dynamodb的ODM(对象数据映射器)。
希望它有所帮助。
答案 2 :(得分:0)
答案 3 :(得分:0)
我们将dynamo-easy与打字稿一起用于我们的生产应用程序。 (直接从浏览器或Lambda函数内部)
它提供了从JS到DynamoDB类型的映射,还为请求API提供了一些不错的抽象。
import Web3 from 'web3'
export const startMetaMask = () => {
if (window.ethereum) {
web3 = new Web3(window.ethereum);
try {
window.ethereum.enable().then(function() {
});
} catch (e) {}
}
else if (window.web3) {
web3 = new Web3(web3.currentProvider);
}
else {
alert('You have to install MetaMask !');
}
}
全面披露:我是图书馆的作者之一