在Node.js中映射Azure表存储数据模型的最简单方法

在Node.js中映射Azure表存储数据模型的最简单方法,node.js,azure,azure-table-storage,Node.js,Azure,Azure Table Storage,当我想将javascript对象(或实体)添加到Azure表存储时,首先需要通过entityGenerator运行它们 我的对象可以如下所示: { id: 1, name: 'foo', timestamp: new Date() } { id: { '_': 1, '$': 'Edm.Int32' }, name: { '_': 'foo', '$': 'Edm.String' }, timestamp:{ '_': new Date(), '$': 'Edm.Dat

当我想将javascript对象(或实体)添加到Azure表存储时,首先需要通过
entityGenerator
运行它们

我的对象可以如下所示:

{
  id: 1,
  name: 'foo',
  timestamp: new Date()
}
{
  id: { '_': 1, '$': 'Edm.Int32' },
  name: { '_': 'foo', '$': 'Edm.String' },
  timestamp:{ '_': new Date(), '$': 'Edm.DateTime' },
}
我需要传递给
表服务的实体将如下所示:

{
  id: 1,
  name: 'foo',
  timestamp: new Date()
}
{
  id: { '_': 1, '$': 'Edm.Int32' },
  name: { '_': 'foo', '$': 'Edm.String' },
  timestamp:{ '_': new Date(), '$': 'Edm.DateTime' },
}
这也是从
表服务
返回实体的格式

将我的对象映射到正确的格式以发送到我的表存储非常简单,但是我还没有找到一种简单的方法将从我的服务返回的实体转换回我可以轻松使用的常规JavaScript对象

我可以创建某种类型的通用映射器函数,以从实体的
\uu
属性中获取值,但似乎有些元数据属性也被传递到实体本身

有人知道在JavaScript对象和Azure表存储实体之间映射的简单方法吗?


由于azure storage SDK for Node是通过storage Rest API实现的,因此此功能是否(或是否应该)包含在azure storage库中?

。要使用Azure存储资源,您可以利用SDK并自己使用RESTAPI实现

根据API参考,例如,我们需要生成如下请求主体:

{
   "Address":"Mountain View",
   "Age":23,
   "AmountDue":200.23,
   "CustomerCode@odata.type":"Edm.Guid",
   "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",
   "CustomerSince@odata.type":"Edm.DateTime",
   "CustomerSince":"2008-07-10T00:00:00",
   "IsActive":true,
   "NumberOfOrders@odata.type":"Edm.Int64",
   "NumberOfOrders":"255",
   "PartitionKey":"mypartitionkey",
   "RowKey":"myrowkey"
}
这意味着我们需要定义主体中属性的类型

因此,我认为生成表实体的最简单方法是通过函数使用Azure Storage SDK


任何进一步的问题,请随时告诉我。

我遇到了同样的问题,但我决定我的特定DAO和应用程序(nodejs)不需要元数据

最后在result.entries上使用map并返回一个已清理的对象

  Object.keys(row).forEach((key) => {
     newRow[key] = row[key]['_']; 
  });

我同意azurestorage应该包括插入和删除数据的更直接的方式。我必须为查询生成器构建一个map/reduce类包装器,这样它就不会用额外的东西淹没应用程序的其余部分。我想要一个简单的用于NodeJS的DAO类。也许我们可以一起构建一个?

以防其他人偶然发现:您可以访问
响应
正文
部分中的值。结果包含实际的表实体


因此,要访问示例中的名称部分,请使用
response.body.name

我理解entityGenerator的需要,但我想知道是否可以从TableService()返回原始值。从表中获取JavaScript对象后,我不需要所有这些OData类型和元数据。有没有办法从odatahandler返回这个实体?