-
数据库一些列的值能否自动获取文档里的数据
2024-05-15 23:46这个也是可以的,效果大概这样:
代码会复杂一点,需要写一些正则。
.action{$key := "链接:"} .action{$ret := queryBlocks "SELECT * FROM blocks WHERE root_id = '?' AND type = 'p' AND content LIKE '?%' LIMIT 1" .id $key} .action{if len $ret} .action{$val := first $ret} .action{$text := regexFind `\[.*\]` $val.Markdown} .action{$text = trimPrefix `[` (trimSuffix `]` $text)} .action{$url := regexFind `(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]` $val.Markdown} <span data-type="a" data-href=".action{$url}">.action{$text}</span> .action{end}
-
数据库一些列的值能否自动获取文档里的数据
2024-05-15 23:13是这种效果吗?
代码是这样,就是一些 if else:
.action{ if .title } .action{ $key1 := "关键字甲" } .action{ $key2 := "关键字乙" } .action{ if contains $key1 .title } 当文档名包含关键字甲时需要输出的内容 .action{ else if contains $key2 .title } 当文档名包含关键字乙时需要输出的内容 .action{ else } 其他情况需要输出的内容 .action{ end } .action{ end }
其实模板列代码很好写,可以去看看最近发的那篇模板教程。
-
数据库一些列的值能否自动获取文档里的数据
2024-05-08 13:03可以的,改一下 SQL 就能实现。主要是各级标题可能不止一个,要根据你的应用场景来写展示数据的代码。一个简单的场景,获取一个一级标题的名称并展示:
.action{$h := "1"} .action{$ret := queryBlocks "SELECT * FROM blocks WHERE root_id = '?' AND type = 'h' AND subtype = 'h?' LIMIT 1" .id $h} .action{if len $ret} .action{$val := first $ret} .action{$val.Content} .action{end}
获取二级标题就把
h
的值改成 2 就行。 -
数据库一些列的值能否自动获取文档里的数据
2024-05-07 11:38我在我的四百行数据库上测试了你的代码,新增前后的响应时间几乎没有变化,还是几百毫秒,没有你说的秒级卡顿。之前用 SQL 模板列确实比 PPT 还卡,3.0.11 理论上应该是不卡了的。
另外,单从你的代码上看,好像没必要用 SQL 呀,获取
hpath
的最后一项,那不就是文档标题吗?直接用.action{.title}
就好了。 -
数据库一些列的值能否自动获取文档里的数据
2024-05-07 01:24不知道你用的是哪个版本,从 3.0.7 左右开始,模板列应该是加了缓存,响应时间基本上控制在可接受范围之内了。目前,我两百行的数据库基本无明显延迟;四百行的数据库大概需要八百毫秒的响应时间,有轻微卡顿感,不过相比之前动辄八秒还是好太多了。相信 D 大,等数据量上去了再优化一下
-
数据库一些列的值能否自动获取文档里的数据
2024-05-06 13:32我个人是这样用的:有些数据,我觉得不方便放到数据库字段上,或是我希望在文档里能够直接看到,等等,所以写到了文档里面;同时,我又希望在数据库上能够筛选这些数据,不希望重复劳动。在这种情况下,我就会把这个数据用
key: value
的形式写在文档里,然后用模板列写 SQL 来检索这些数据。比如,这个音乐专辑标记场景里的「风格」,我喜欢在文档里用块引用,因为一来方便看,二来方便输入(我设置了缩写别名,可以快速输入,如果在数据库字段上的话,不太方便);然后我又有整理同一风格的专辑的需求,所以就用了 SQL 模板列,把文档里的数据取出来。
-
数据库一些列的值能否自动获取文档里的数据
2024-05-06 11:09使用以下代码,把
$key
的值改成你的字段名,比如$key := "📅制造日期:"
。.action{$key := "<你的字段名,如果有冒号,也得加上>"} .action{$ret := queryBlocks "SELECT * FROM blocks WHERE root_id = '?' AND type = 'p' AND content LIKE '?%' LIMIT 1" .id $key} .action{if len $ret} .action{$val := first $ret} .action{trimPrefix $key $val.Content} .action{end}
-
被引用的块虚拟引用失效
2024-04-09 21:41哦哦,你应该是理解错了 😂 你回头看看我发的图,我说的是“被”引用的块中的文本(块 2)没有正常显示虚拟引用,而不是引用的块中的锚文本(块 3)没有显示。块 2 没被引用前是正常显示虚拟引用的,被块 3 引用之后就不显示了。
-
我到底应该基于数据库扩展 " 标签”属性,还是直接使用文档的标签系统
2024-04-07 17:44我明白了,你是用了行间标签,而不是文档标签。文档标签在文档标题的旁边设置,会显示在标题的上方而不是正文中。
如果希望展示行间标签,需要编写 sql 查询才行。
-
我到底应该基于数据库扩展 " 标签”属性,还是直接使用文档的标签系统
2024-04-07 17:25我在测试工作空间里粘贴后可以直接使用,检查一下代码的完整性?还有就是注意要把链滴的版权信息删掉。
-
数据库模板列 tip 有点问题
2024-04-07 12:32你的模板列代码应该是换行了 😂
你的代码应该长这样:
.action{...} .action{...} 本月 .action{...}
渲染模板列的时候,会把代码里面的换行符也打印出来,所以你看到的就是
本月
如果希望消除这些换行,把代码改成一行就行:
.action{...}.action{...}本月.action{...}
-
我到底应该基于数据库扩展 " 标签”属性,还是直接使用文档的标签系统
2024-04-07 12:18点击模板列的效果和文本列一样,都是展示 cell 的 textarea。不过,如果 cell 里面有可点击的元素的话,是可以点击的。比如,前面模板代码里的标签样式,是我即时写的,只是纯文本加了背景色,点击就是 textarea;其实,可以改为标签的原生样式,点击里面的标签,就可以唤起标签的搜索 tab 了:
.action{$tags := splitList "," .tags} .action{range $index, $tag := $tags} <span data-type="tag">.action{$tag}</span> .action{end}
模板列里也可以执行 js 代码,扒扒源码应该可以实现你的这个想法?不过我个人感觉还是由官方新增一个专门的标签列会比较好。
-
我到底应该基于数据库扩展 " 标签”属性,还是直接使用文档的标签系统
2024-04-06 22:18要不试试模板列?
假如你现在有一个包含两个标签的文档:
加入数据库后,使用模板列,输入以下代码:
.action{$tags := splitList "," .tags} .action{range $index, $tag := $tags} <span style="padding: 1px 6px 1px 6px; background-color: var(--b3-font-background13); border-radius: 3px;"># .action{$tag}</span> .action{end}
能够得到这样的效果:
这样做,可以保留你原有的习惯,数据库也有了你说的“辅助过滤的能力”(通过筛选、搜索等),还不需要额外的成本(不需要再维护一个多选列)。不足之处是不能直接在数据库列上修改标签,要回到文档去。
-
分享数据库模板列的一些有趣实现
2024-03-09 16:54提醒一下,这个做法仅适用于较小的数据库,或者没有其他列的数据库,因为一行需要执行一条 sql,50 行就需要执行 50 条 sql,基本上是点一下就要卡一下的程度(秒级卡顿)。我目前有一个 200 行的数据库,有一个这样的模板列,渲染需要 4.5s 左右;另一个 40 行的数据库,有四个这样的模板列,渲染也需要 4.5s 左右(这个时间有点飘忽不定,有时候是 6s 左右)。由于思源目前对于模板列的渲染方式需要在后端计算出整个表格(我猜的,因为假如要对模板列进行筛选,就必须要先计算出所有的值),所以分页并不能提升反应速度。之前我也有想过分享类似的用法,但是被响应时间给劝退了 😂 看下 D 大能不能优化一下这个 @88250