2016-11-07 56 views
4

當我想將我的javascript對象(或實體)添加到我的Azure表存儲時,首先需要通過entityGenerator運行它們。在Node.js中映射Azure表存儲數據模型的最簡單方法

我的物體看起來是這樣的:

{ 
    id: 1, 
    name: 'foo', 
    timestamp: new Date() 
} 

我需要傳遞給TableService的實體會是這樣的:

{ 
    id: { '_': 1, '$': 'Edm.Int32' }, 
    name: { '_': 'foo', '$': 'Edm.String' }, 
    timestamp:{ '_': new Date(), '$': 'Edm.DateTime' }, 
} 

這也就是格式,其中的實體從TableService返回。

將我的對象映射到正確的格式,將它們發送到我的表格存儲是非常簡單的,但我還沒有找到一種簡單的方法來將返回的實體轉換成我的服務返回到我可以輕鬆地處理的常規JavaScript對象。

我可以創建某種通用映射函數來從實體上的_屬性中獲取值,但似乎有些元數據屬性也會傳遞到實體本身。

有誰知道一個簡單的方法來映射JavaScript對象和Azure表存儲實體嗎?

是否(或應該)將此功能包含在azure-storage庫中?

回答

-1

由於Azure存儲SDK for Node是使用Storage Rest API實現的。要使用Azure存儲資源,您可以利用SDK並自行實施Rest API。

並根據API參考,E.G. Insert Entity,我們需要生成請求體等:

{ 
    "Address":"Mountain View", 
    "Age":23, 
    "AmountDue":200.23, 
    "[email protected]":"Edm.Guid", 
    "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833", 
    "[email protected]":"Edm.DateTime", 
    "CustomerSince":"2008-07-10T00:00:00", 
    "IsActive":true, 
    "[email protected]":"Edm.Int64", 
    "NumberOfOrders":"255", 
    "PartitionKey":"mypartitionkey", 
    "RowKey":"myrowkey" 
} 

這意味着我們需要defind在體內的屬性的類型。

因此,在我看來,最簡單的生成表格實體的方法是通過entityGenerator函數使用Azure存儲SDK。

任何進一步的關注,請隨時讓我知道。

+2

我瞭解entityGenerator的需求,但我想知道是否可以從TableService返回原始值(https://github.com/Azure/azure-storage-node/blob/master/lib/services /table/internal/odatahandler.js#L155)。從我的表中獲取它們後,我不需要JavaScript對象上的所有這些OData類型和元數據。有沒有辦法從odatahandler返回這個rawEntity? – Schaemelhout

相關問題