2012-12-12 4 views
4

데이터를 Azure 테이블에 삽입하려하지만 모든 것이 문자열로 변환됩니다.Azure 테이블 저장소는 문자열을 데이터 형식으로 만 지원합니까?

예. 나는 숫자/부울

var test={ PartitionKey : '4', RowKey : '2', foo: 4, bar: true }; 
tableService.insertEntity('mytable', test, ...); 

하지만

tableService.queryEntity('mytable', '4', '2', ...); 

반환 내가 데이터 유형을 지정할 수있는 방법

{ id: 'http://127.0.0.1:10002/devstoreaccount1/identid(PartitionKey=\'4\',RowKey=\'2\')', 
    link: 'identid(PartitionKey=\'4\',RowKey=\'2\')', 
    updated: '2012-12-12T10:26:44Z', 
    etag: 'W/"datetime\'2012-12-12T10%3A26%3A44.547Z\'"', 
    PartitionKey: '4', 
    RowKey: '2', 
    Timestamp: '2012-12-12T10:20:44.897Z', 
    foo: '4', 
    bar: 'true' } 

를 삽입하는거야?


확인, 당신이

var test={ PartitionKey : '4', RowKey : '2', 
    foo: { '@': { type: 'Edm.Int32' }, '#': 4 } }; 

그러나 자동으로 유형을 추가하는 모든 도우미 기능이 있습니다와 데이터 형식을 지정할 수있는 SDK에서 본?

+0

해킹 : 제대로 입력 된 더미 개체를 사용하여 테이블을 시드하는 경우 (htt p : //azurestorageexplorer.codeplex.com/ 또는 그 이후의 후속 삽입은 올바르게 입력됩니다 (잘못된 유형의 후속 삽입은 오류를 발생시킵니다). – JcFx

+0

흥미 롭습니다. 나는 테이블 스토리지가 스키마와 같은 것을 지원한다는 것을 몰랐다. – laktak

+0

오류가 발생하지 않고 엔티티에 필드를 더 추가 할 수 있지만 (존재하지 않는) 엔티티에 필드를 추가 할 수 있지만 bool이있는 'test'라는 필드가 이미있는 경우에는 'invalid input'오류가 발생합니다 해당 필드에 문자열 (심지어 'true')을 넣으십시오. 따라서 더미 객체를 만드는 것은 일종의 암시 적 스키마를 만드는 것처럼 보입니다. – JcFx

답변

4

SDK에 내가 지금이 쓴 유용한 것을 포함 나타나지 않기 때문에 :

function azType(type, v) { return { "@": { type: type }, "#": v }; } 
function azBool(v) { return azType("Edm.Boolean", v); } 
function azBinary(v) { return azType("Edm.Binary", v); } 
function azByte(v) { return azType("Edm.Byte", v); } 
function azDateTime(v) { return azType("Edm.DateTime", v); } 
function azDateTimeOffset(v) { return azType("Edm.DateTimeOffset", v); } 
function azDecimal(v) { return azType("Edm.Decimal", v); } 
function azDouble(v) { return azType("Edm.Double", v); } 
function azGuid(v) { return azType("Edm.Guid", v); } 
function azInt64(v) { return azType("Edm.Int64", v); } 
function azInt32(v) { return azType("Edm.Int32", v); } 
function azInt16(v) { return azType("Edm.Int16", v); } 
function azSByte(v) { return azType("Edm.SByte", v); } 
function azSingle(v) { return azType("Edm.Single", v); } 
function azString(v) { return azType("Edm.String", v); } 
function azTime(v) { return azType("Edm.Time", v); } 

var test={ PartitionKey : '4', RowKey : '2', foo: azInt32(4) }; 

같이 그들은 그것을 변경 이유를 모르겠어요하지만 시작 0.6.10으로 azType 함수를 바꿔야합니다.

function azType(type, v) { return { "$": { type: type }, "_": v }; } 
1

들만 8 개 유형이 표 서비스 데이터 모델에 의해 지원됩니다

  • Edm.Binary을
  • Edm.Boolean
  • Edm.DateTime
  • Edm.Double
  • Edm.Guid
  • Edm.Int32
  • Edm.Int64
  • Edm.String
http://msdn.microsoft.com/en-us/library/windowsazure/dd179338.aspx

를 통해

및 개체의 ID 속성에주의 :

{ PartitionKey : '4', RowKey : '2', id: azInt32(4) };

당신이 오류 메시지가 너무 명확하지 않다, 그렇게하려고하면 :

Error inserting : { [Error: [object Object]] code: 'PropertiesNeedValue', message:{ _: 'The values are not specified for all properties in the entity...','$': { 'xml:lang': 'en-US' } } }

관련 문제