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

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

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

  • 思源笔记

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

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

    24581 引用 • 100711 回帖
  • Q&A

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

    9288 引用 • 42246 回帖 • 115 关注

相关帖子

被采纳的回答
  • 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 }
请输入回帖内容 ...

推荐标签 标签

  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 491 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    549 引用 • 674 回帖
  • Flutter

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

    39 引用 • 92 回帖 • 2 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 3 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 1 关注
  • Follow
    4 引用 • 12 回帖 • 6 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    171 引用 • 414 回帖 • 376 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1276 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    295 引用 • 749 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 19 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 5 关注
  • Excel
    31 引用 • 28 回帖 • 1 关注
  • OneDrive
    2 引用
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 251 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 20 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 603 关注
  • 爬虫

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

    106 引用 • 275 回帖 • 2 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 441 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 2 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 205 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖