2017-12-09 12 views
2

フィールドの名前をSQLの列に似せる方法はありますか?Tarantool - 名前付きフィールド?

アイデアは私が顧客レコードを挿入したいかもしれないということです。 - 名前 - 電話 - 電子メール - ウェブサイト

いくつかのフィールドが、時々存在するかもしれない他のではない、と彼らが提示される可能性があります異なる順序。

フィールド名で参照するタプルにレコードを挿入する方法はありますか?以下のような擬似コードで

何か:

s:insert(1, "name": "foo name", "phone": "foo phone") 
s:insert(2, "phone": "bar phone", "name": "bar name", "email": "bar email") 
+0

avroスキーマを使用して、自分のスペースにスキーマを定義することができます。ここで非常に良いチュートリアルがあります:https://tarantool.org/ja/doc/1.7/book/app_server/creating_app.html。 –

+0

ありがとうございます。私は現在、Marshmallowを使用しています(私がAvroに似ていることを知っている限り)。私は、SQLカラムの名前と同じ名前をフィールドに割り当てることができるかどうか疑問に思っていました。 –

答えて

2

あなたがスペースのためのスキーマを定義するときは、その後、まだ文書化されていないspace:format()機能を使用して、フィールド名を割り当てることができますし、インデックス定義のためのこれらの名前を使用することができます。 [available in Tarantool 1.7+]

サンプルコード:

box.once("testapp:schema:1", function() 
    local customer = box.schema.space.create('customer') 
    customer:format({ 
     {'customer_id', 'unsigned'}, 
     {'name', 'string'}, 
    }) 
    customer:create_index('customer_id', {parts = {'customer_id'}}) 

    local account = box.schema.space.create('account') 
    account:format({ 
     {'account_id', 'unsigned'}, 
     {'customer_id', 'unsigned'}, 
     {'balance', 'unsigned'}, 
     {'name', 'string'}, 
    }) 
    account:create_index('account_id', {parts = {'account_id'}}) 
    account:create_index('customer_id', {parts = {'customer_id'}, unique = false}) 
    box.snapshot() 
end) 

残念ながら、あなたはspace:insert()または類似の機能でフィールド名を使用することはできません。

関連する問題