기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
엔터티의 필드 데이터 저장
다음 예제는 앱이 소유한 엔터티의 필드 데이터를 저장(상태 패브릭에 쓰기)하는 방법을 보여줍니다. 해당 예제에는 다음 함수가 사용됩니다.
AWS_WEAVERRUNTIME_API Result<void> StoreEntityField( Transaction& txn, const Entity& entity, TypeId keyTypeId, FieldIndex index, std::int8_t* src, std::size_t length) noexcept;
Api::TypeId keyTypeId
파라미터는 전달된 데이터의 데이터 유형을 나타냅니다.
Api::TypeId keyTypeId
파라미터는 Api::BuiltinTypeId
에서 해당 Api::TypeId
를 수신해야 합니다. 적절한 변환이 없는 경우 Api::BuiltinTypeId::Dynamic
을 사용할 수 있습니다.
복잡한 데이터 유형의 경우 Api::BuiltInTypeId::Dynamic
을 사용합니다.
참고
FieldIndex index
값은 0보다 커야 합니다. 0 값은 인덱스 키용으로 예약되어 있습니다(StoreEntityIndexKey()
참조).
예 프리미티브 데이터 유형을 사용한 예제
namespace { constexpr Api::FieldIndex k_isTrueFieldId { /* value */ 1 }; } Result<void> SetEntityFields( Api::Entity& entity, Transaction& transaction) { bool value = true; auto* src = reinterpret_cast<std::int8_t*>(value); size_t length = sizeof(*value); WEAVERRUNTIME_TRY(Api::StoreEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Bool), k_isTrueFieldId, src, length)); }
예 struct를 사용한 데이터 보관 예제
namespace { constexpr Api::FieldIndex k_dataFieldId { /* value */ 1 }; } struct Data { bool boolData; float floatData; }; Result<void> SetEntityFields( Api::Entity& entity, Transaction& transaction) { Data data = { /* boolData */ false, /* floatData */ -25.93 }; auto* src = reinterpret_cast<std::int8_t*>(data); size_t length = sizeof(*data); WEAVERRUNTIME_TRY(Api::StoreEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Dynamic), k_dataFieldId, src, length)); }