5

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' }

データ型を指定するにはどうすればよいですか?


OK、SDK でデータ型を指定できることがわかりました

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

ただし、タイプを自動的に追加するヘル​​パー関数はありますか?

4

2 に答える 2

6

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 }; }
于 2012-12-12T15:07:08.797 に答える
1

hereによると、次の 8 種類のみがテーブル サービス データ モデルでサポートされています。

  • Edm.Binary
  • Edm.Boolean
  • Edm.DateTime
  • Edm.Double
  • Edm.Guid
  • Edm.Int32
  • Edm.Int64
  • Edm.String

オブジェクトの 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' } } }

于 2013-06-09T14:16:10.530 に答える