DynamoDB (veya özellikle DynamoDB veri modelinin kavramları) için AWS Ruby SDK belgelerinin etrafına kafamı sarmış görünmüyorum. ÖzellikleRuby ile AWS DynamoDB içindeki öznitelikleri anlama
ben okuyordum: http://docs.aws.amazon.com/AWSRubySDK/latest/frames.html#!AWS/DynamoDB.html
Note: I have read through the Data Model documentation as well and it's still not sinking in; I'm hoping a proper example in Ruby with clear up my confusion
aşağıdaki kod parçacığını, ben "ITEM_ID" adlı bir primary_key vardır "my_books" adında bir tablo oluşturmak ve bir Kare tuşu (bir Hash var/Aralık bileşimi) ...
dyn = AWS::DynamoDB::Client::V20120810.new
# => #<AWS::DynamoDB::Client::V20120810>
dyn.create_table({
:attribute_definitions => [
{ :attribute_name => "item_id", :attribute_type => "N" }
],
:table_name => "my_books",
:key_schema => [
{ :attribute_name => "item_id", :key_type => "HASH" },
],
:provisioned_throughput => {
:read_capacity_units => 10,
:write_capacity_units => 10
}
})
# => {:table_description=>{:attribute_definitions=>[{:attribute_name=>"item_id", :attribute_type=>"N"}], :table_name=>"my_books", :key_schema=>[{:attribute_name=>"item_id", :key_type=>"HASH"}], :table_status=>"ACTIVE", :creation_date_time=>2014-11-24 16:59:47 +0000, :provisioned_throughput=>{:number_of_decreases_today=>0, :read_capacity_units=>10, :write_capacity_units=>10}, :table_size_bytes=>0, :item_count=>0}}
dyn.list_tables
# => {:table_names=>["my_books"]}
dyn.scan :table_name => "my_books"
# => {:member=>[], :count=>0, :scanned_count=>0}
Daha sonra tabloyu yeni bir öğe ile doldurmaya çalışıyorum. Anladığım kadarıyla ... Ben item_id
sayısal değeri belirtmek gerekir (birincil anahtar olan) ve sonra ben tabloya ekliyorum yeni öğe/kayıt/belge için diğer özelliklerini belirleyebildiğinde olmasıdır
dyn.put_item(
:table_name => "my_books",
:item => {
"item_id" => 1,
"item_title" => "My Book Title",
"item_released" => false
}
)
Ama bu geçen komut aşağıdaki hata verir: oldukça karma yapılmış olacak anlamıyorum rağmen Yani
expected hash value for value at key item_id of option item
, bunu yaparken deneyin:
dyn.put_item(
:table_name => "my_books",
:item => {
"item_id" => { "N" => 1 },
"item_title" => "My Book Title",
"item_released" => false
}
)
Ancak bu, şu hatayı döndürür ...
expected string value for key N of value at key item_id of option item
Farklı varyasyonlar denedim, ancak bunun nasıl çalıştığını anlayamıyorum?
DÜZENLEME/GÜNCELLEME: Uri Agassi önerdiği gibi - ben 1
den "1"
değer değiştirdi. Ben neden emin değilim emin değilim bu tür bir sayı ve bir dize olarak tanımladım, ancak Tamam sadece kabul ve devam edelim.
deneyin '... "ITEM_ID"=> { "N" => "1"}, ... '- hata mesajına göre bir dize değeri bekleniyor –