用户登录

用户可以上传文件,上传的文件可以属于某个内容。

先写一段 SurealQL 创建一个文件数据,CREATE file,然后用一个 CONTENT 提供一下 file 相关的数据,一个对象,里面先添加一个 id 属性,手工设置一下这个文件数据的 id,比如 file:1,再添加一个 filename,值可以用一下 rand::uuid() 生成一个随机的 uuid。然后添加一个 user 属性,值是 user:libai。

belongsTo

再让这个文件属于某个内容,RELATE file:1->belongsTo->post:1,表示 file:1 这个文件数据属于 post:1 这个内容。在文件与内容之间建立一个图形关系,这个关系就是 belongsTo。

文件

再执行一下 SELECT * FROM file,显示有一条文件数据,在结果里包含文件相关的内容,->belongsTo->post AS post,现在结果里会包含一个 post 属性,它的值是一个数组,里面的项目就是文件相关的内容的 id。

在查询里可以 fetch 一下 post,或者如果只需要内容的标题,可以在这个 post 后面加上一个点,然后是内容文档里的一个属性的名字,比如 title。

内容

下面再查询一下内容列表,SELECT * FROM post,在内容列表的项目里包含内容相关的文件,在 SELECT 后面,添加一个 <-belongsTo<-file AS file。

现在内容项目里会有一个 file 属性,它的值就是一组跟这个内容相关的文件。在查询里 FETCH 一下这个 file, 这样内容项目里的 file 属性的值就是一组具体的文件数据了。

链接

在内容数据里面可以用 file 这个属性记录一下内容相关的文件,UPDATE post:1 SET file = file:1。

再执行一下 SELECT * FROM post:1 FETCH file。因为在内容数据里用 file 属性记录了一下内容相关的文件,所以想在查询结果里包含 file,不需要做特别的处理,直接 fetch 一下 file 就行了。

文件与内容《 SurrealDB 多模型数据库:应用实践 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点