用 surrealdb 的客户端更新数据,可以使用 update 或者 change ,还有 modify。
先复制一下要修改的这个内容的 id,然后在项目里试一下 update 这个方法,声明一个 result,等于await ,用一下客户端上的 update 这个方法,设置一下要东西的东西,可以是一个表的名字,或者一条数据记录的 id。
第二个参数是个对象,里面添加一个 content,然后设置一下对应的内容。
在终端,执行 node index.mjs,你会发现,这条数据里面只剩下 id 还有 content 这两个字段,之前这条记录里的 title 字段不见了,这个 update 方法的功能有点像是覆盖。
这个方法对应的 surrealQL 用的就是 UPDATE 声明,然后在 CONTENT 后面设置了一下要替换成的内容。
change
如果只想修改数据记录里的其中的一部分,可以使用 change 这个方法,用一下 change 这个方法,设置一下要修改的数据的 id,然后再提供一个对象,里面可以再添加一个 title 。
在终端再运行一下应用,然后观察一下修改之后的这条数据。现在这条记录里有 title 还有 content 。这个方法用的 sql 也是 UPDATE,只不过用的是 MERGE ,设置了一下要合并的数据。
modify
修改数据也可以使用 modify 这个方法。它用的 sql 是 UPDATE 外加 PATCH。用一下 modify 这个方法,设置一下要修改的内容的 id。
再提供一个数组,数组里面添加一个对象,对象里用 op 先设置一下要做的操作,比如可以是 add remove 或者 replace。表示添加, 移除或者替换。用一下 add 这个操作。
再添加一个 path ,设置一下修改的路径,这个路径表示的是在一个 json 文档里的某一个属性。比如 /status,然后用 value 设置一下对应的值,设置成 published。
在终端,执行一下。
打开 HTTP 客户端,用管理员身份执行一段查询,SELECT * FROM 后面是这个内容的 id。你会发现这个数据里面,会添加了一个 status 属性,它的值是 published。
下面可以再试一下 replace 操作,使用 modify,把 op 设置成 replace,path 是 /status,value 设置成 draft。
再运行一下应用。然后查看一下这条数据 。这个内容的 status 会被修改成 draft。
再试一下 remove 这个操作,op 设置成 remove,path 是 /status,可以不提供 value 属性。
运行一下应用。查看这条数据,它里面的 status 属性已经被删除掉了。
delete
如果想删除数据,可以使用客户端提供的 delete 这个方法,用一下这个 delete 方法,把要删除的东西交给它。
在终端,运行一下应用。
再查看一下这个被删除的内容,返回的结果是空白的数组 ,因为内容已经被删除掉了。