在上一堂课我们已经创建 Collections (如同 Table) 和 Predicates (如同 Row),如果我们要添加数据到某一个 Collection 中的话,可以使用如下的 transact:
[
{
"_id":"user",
"wallet":"0x7EA1EaA27b313D04D359bF3e654FE927376e31Bb",
"email":"[email protected]"
},
]
其中 “_id” 在 fluree 叫做 “temporary id” (临时ID), 也就是说在这笔 transact 中,你要操作的东西是什么,如果 _id 直接是 collection name,就会被预设为添加 (add) 动作,如果你要有其他动作,可以使用 “_action”: “xxxx”
有时后我们可能在一组 transact 中会想使用到创建的东西,例如我创建 2 个 user,但同时也创建一个 event,想指定新创建的 user 是 event 的 host,这时候 user 在整个操作中就要有一个临时 ID,这部份可以使用 “$” 字号建立 ID:
[
{
"_id":"user$1",
"wallet":"0x7EA1EaA27b313D04D359bF3e654FE927376e31Bc",
"email":"[email protected]"
},
{
"_id":"user$2",
"wallet":"0x5e6CcE07A609D7550Ffd39beEa0d8B2eeF28FCd3",
"email":"[email protected]"
},
{
"_id": "event",
"host": "user$1",
"participants": ["user$1", "user$2"],
"starttime": "#(now)"
}
]
这边的 "$" 字号可以帮忙区分这两个新建数据在本次 transact 中的关系,$ 字号后面可以用 1, 2, 3 也可以用 john, jack ... ,都不限制,因为都是临时ID。
然后新增时间的时后,有一个功能是使用 #(now)
来记录当前新增时间
整个操作如下:
# Linux
curl -i -H "Content-Type: application/json" -d '[{"_id":"user$1","wallet":"0x7EA1EaA27b313D04D359bF3e654FE927376e31Bc","email":"[email protected]"},{"_id":"user$2","wallet":"0x5e6CcE07A609D7550Ffd39beEa0d8B2eeF28FCd3","email":"[email protected]"},{"_id":"event","host":"user$1","participants":["user$1","user$2"],"starttime":"#(now)"}]' <http://13.114.145.25/fdb/seedao/testing/transact>
# Windows
curl -i -H "Content-Type: application/json" -d "[{\\"_id\\":\\"user$1\\",\\"wallet\\":\\"0x7EA1EaA27b313D04D359bF3e654FE927376e31Bc\\",\\"email\\":\\"[email protected]\\"},{\\"_id\\":\\"user$2\\",\\"wallet\\":\\"0x5e6CcE07A609D7550Ffd39beEa0d8B2eeF28FCd3\\",\\"email\\":\\"[email protected]\\"},{\\"_id\\":\\"event\\",\\"host\\":\\"user$1\\",\\"participants\\":[\\"user$1\\",\\"user$2\\"],\\"starttime\\":\\"#(now)\\"}]" <http://13.114.145.25/fdb/seedao/testing/transact>
创建完成即可