在数据表中,求一个模板,根据添加到数据库的主键的那个文档,返回它的父文档链接

场景就是,我把一个文档发送到数据库,那这个文档的标题和链接就显示在了该数据库的主键中。

此时我想设计一个模板列,自动获取这个主键所引用的文档的父文档标题和链接(相当于在数据库列中可点击)。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25806 引用 • 106823 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9897 引用 • 44994 回帖 • 80 关注

相关帖子

被采纳的回答
  • wilsons 1

    这一版,同主键 ID 样式一样,支持预览

    .action{ if index . "custom-avs" } .action{$id := .id} .action{$blocks := queryBlocks "select * from blocks where id='?'" $id} .action{ $b := first $blocks} .action{$list := splitList $b.ID $b.Path } .action{$f := first $list } .action{$len := len $f } .action{$len := sub $len 1 } .action{$len := int $len } .action{ if ne 0 $len } .action{$f := substr 1 $len $f} .action{$list := splitList "/" $f } .action{$ParentID := last $list } .action{$ParentID := trim $ParentID } .action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID} .action{$b := first $blocks} <span data-type="block-ref" data-id=".action{$b.ID}" data-subtype="s" class="av__celltext av__celltext--ref" style="">.action{$b.Content}</span> .action{ end } .action{ end }

    image.png

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 试试这个

    .action{$id := .id} .action{$blocks := queryBlocks "select * from blocks where id='?'" $id} .action{ $b := first $blocks} .action{$blocks := queryBlocks "select * from blocks where id='?'" $b.ParentID} .action{ $b := first $blocks} <a href="siyuan://blocks/.action{$b.ID}" onclick="event.stopPropagation()">.action{$b.Content}</a>
    1 回复
  • JeffreyChen 1 1 评论

    不行的,文档块没有 ParentID

    关联 思源中能否根据子文档 id 查询到父文档 id

    1 回复
    @wilsons 楼主的需求是“根据添加到数据库的主键的那个文档,返回它的父文档链接”,影响就是你这个完全实现不了啊
    JeffreyChen
  • wilsons 1

    谢谢 J 佬,明白了。

    整了半天,搞好了,这回应该行了。

    .action{$id := .id} .action{$blocks := queryBlocks "select * from blocks where id='?'" $id} .action{ $b := first $blocks} .action{$list := splitList $b.ID $b.Path } .action{$f := first $list } .action{$len := len $f } .action{$len := sub $len 1 } .action{$len := int $len } .action{$f := substr 1 $len $f} .action{$list := splitList "/" $f } .action{$ParentID := last $list } .action{$ParentID := trim $ParentID } .action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID} .action{$b := first $blocks} <a href="siyuan://blocks/.action{$b.ID}" onclick="event.stopPropagation()">.action{$b.Content}</a>

    刚开始用减法减后没有转换整形就老报错,这个好坑,减法本来就是数学运算,竟然计算后还得类型转换。

    1 回复
  • 建议首尾加上这个,否则会报错:

    .action{ if index . "custom-avs" } .action{ end }
    1 回复
  • 谢谢 J 佬的指点,最终版,加了顶级文档没有父文档报错的判断。

    .action{ if index . "custom-avs" } .action{$id := .id} .action{$blocks := queryBlocks "select * from blocks where id='?'" $id} .action{ $b := first $blocks} .action{$list := splitList $b.ID $b.Path } .action{$f := first $list } .action{$len := len $f } .action{$len := sub $len 1 } .action{$len := int $len } .action{ if ne 0 $len } .action{$f := substr 1 $len $f} .action{$list := splitList "/" $f } .action{$ParentID := last $list } .action{$ParentID := trim $ParentID } .action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID} .action{$b := first $blocks} <a href="siyuan://blocks/.action{$b.ID}" onclick="event.stopPropagation()">.action{$b.Content}</a> .action{ end } .action{ end }
  • wilsons 1 1 评论

    这一版,同主键 ID 样式一样,支持预览

    .action{ if index . "custom-avs" } .action{$id := .id} .action{$blocks := queryBlocks "select * from blocks where id='?'" $id} .action{ $b := first $blocks} .action{$list := splitList $b.ID $b.Path } .action{$f := first $list } .action{$len := len $f } .action{$len := sub $len 1 } .action{$len := int $len } .action{ if ne 0 $len } .action{$f := substr 1 $len $f} .action{$list := splitList "/" $f } .action{$ParentID := last $list } .action{$ParentID := trim $ParentID } .action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID} .action{$b := first $blocks} <span data-type="block-ref" data-id=".action{$b.ID}" data-subtype="s" class="av__celltext av__celltext--ref" style="">.action{$b.Content}</span> .action{ end } .action{ end }

    image.png

    1 回复
    你好厉害,我看你回复了好多人的文档问题
    MasterYS
  • guodalu

    佬,捉个小瑕疵,这个模板在如下条件组合下,会跳出黑框:

    条件一:设置链接只有在“ctrl + 鼠标”触碰下才预览。

    条件二:模板的那个列没有开启换行(开启换行会有个问题,就是会有非常大的空白段在表格列中。),在没有开启换行的情况下,文档的标题链接超出了单元格的宽度。

    在上面两个条件下,把鼠标触碰模板列中的链接,会跳出如下黑框。但是,Ctrl + 鼠标触碰则是正常的预览。

    当把单元格拉长能够完全显示模板列中的标题时,鼠标再进行触碰则是符合预期的什么也没有。(因为设置的就是需要 ctrl)。

    一个小 bug.png

    1 回复
  • 把模板内的所有换行和多余的空格去掉就行了

  • guodalu

    这边放下去掉空余空格后的代码,运行良好很完美。供需要的朋友直接取用。顺便说下这个应用场景:

    以父文档及标题作为项目,然后以子文档标题作为项目下的各种子任务。把子任务文档发送到一个任务管理的数据库表中,任务执行的上下文数据存储在子任务文档中。随着任务的杂多,适当的在数据库表中自动展示父文档即“任务所属项目”有一定的必要性。

    .action{ if index . "custom-avs" }.action{$id := .id}.action{$blocks := queryBlocks "select * from blocks where id='?'" $id}.action{ $b := first $blocks}.action{$list := splitList $b.ID $b.Path }.action{$f := first $list }.action{$len := len $f }.action{$len := sub $len 1 }.action{$len := int $len }.action{ if ne 0 $len }.action{$f := substr 1 $len $f}.action{$list := splitList "/" $f }.action{$ParentID := last $list }.action{$ParentID := trim $ParentID }.action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID}.action{$b := first $blocks}<span data-type="block-ref" data-id=".action{$b.ID}" data-subtype="s" class="av__celltext av__celltext--ref" style="">.action{$b.Content}</span>.action{ end }.action{ end }
请输入回帖内容 ...

推荐标签 标签

  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 256 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 32 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 5 关注
  • V2Ray
    1 引用 • 15 回帖 • 3 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 5 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    201 引用 • 120 回帖
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 1 关注
  • OneDrive
    2 引用 • 2 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 510 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 489 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖 • 3 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 552 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 58 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 2 关注
  • 倾城之链
    23 引用 • 66 回帖 • 169 关注
  • RemNote
    2 引用 • 16 回帖 • 18 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖 • 2 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 34 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 310 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    291 引用 • 4495 回帖 • 658 关注