在上一堂课我们已经创建 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>

创建完成即可