堅牢にmapping + structの複雑なデータ構造を使用する場合、発生する問題は「マッピングを割り当てることができない」です。
より多くのブロックチェーンテクノロジーとアプリケーション分類:
エラーコード
コード
constructor() public{
dataBases[TypeConvertUtil.stringToBytes32(TABLE_BAG_NAME)] = bagRecordOf;
dataBases[TypeConvertUtil.stringToBytes32(TABLE_LOCATIONS_NAME)] = locationRecordOf;
dataBases[TypeConvertUtil.stringToBytes32(TABLE_ATTENDLOCATION_NAME)] = attendLocationRecordOf;
}
この方法で書き込むと、次のエラーが発生します。
browser/TableDefTools.sol:112:9: TypeError: Mappings cannot be assigned to.
dataBases[TypeConvertUtil.stringToBytes32(TABLE_BAG_NAME)] = bagRecordOf;
^----------------------------------------------------------------------^
正しいコード
構造を定義します。
struct RecordBean {
// 表名称
string tableName;
// 主键值
string primaryKey;
// 内容值
string[] values;
}
mapping(bytes32 => mapping(bytes32 => RecordBean)) dataBases;
割り当て:
dataBases[TypeConvertUtil.stringToBytes32(_tableName)][TypeConvertUtil.stringToBytes32(_primaryKey)] = recordBean;
値:
RecordBean recordBean = dataBases[TypeConvertUtil.stringToBytes32(_tableName)][TypeConvertUtil.stringToBytes32(_primaryKey)];