查询当前笔记本下的所有文档,并列出该文档已被加入的数据库,如果没有加入,则为空

这个需求用 Query 能实现吗,如何实现。

  • 思源笔记

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

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

    24597 引用 • 100823 回帖
  • Q&A

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

    9296 引用 • 42309 回帖 • 115 关注

相关帖子

被采纳的回答
  • wilsons 2

    方法一:使用简单查询 js 实现 (推荐)

    1. 先把 js 代码添加到思源代码片段中,到这里下载 [js] 简单查询,让数据从此不再难查,支持显示多字段多视图
    2. 在编辑器中输入 {{}} 然后再弹出的输入框中输入以下 SQL 代码
    3. //!js return query(` SELECT '-' as 序号__no_w80_0, content as 标题__ref_1, CASE WHEN ial LIKE '%{: custom-avs="%' THEN '<font color=green>已加入</font>' ELSE '' END AS 是否已加入数据库__2, id as id__hide FROM blocks WHERE type = 'd' AND box = '${protyle.notebookId}' ORDER BY created desc; `, item);
    4. 说明,此代码会自动获取当前文档所在的当前笔记,且支持更灵活的样式
    5. 效果 image.png

    方法二:Query 挂件实现

    1. 先安装 Query 挂件
    2. 在编辑器中输入 /挂件 选 Query 挂件,然后在挂件中输入以下 SQL 代码
    3. SELECT '[' || content || '](siyuan://blocks/' || id || ')' AS __1____pre__文档标题, CASE WHEN ial LIKE '%{: custom-avs="%' THEN '已加入' ELSE '' END AS __2____pre__是否已加入数据库 FROM blocks WHERE type = 'd' AND box = '20240723175050-336994k' ORDER BY created desc;
    4. 说明,此挂件不能自从获取当前文档所在的笔记,需要手动复制笔记 id 到 box 字段里
    5. 效果 image.png

    PS: 截图字段少了“已”和“库”两个字,正确应该是 是否已加入数据库,代码中已修改,截图就不改了,能理解就行。

    另外,注意,思源默认最大只支持查询 64 条记录,需要在 设置-> 搜索-> 搜索结果显示数 里设置下数量或者 SQL 中加 limit,但如果筛选条数过多,可能出现卡顿现象。

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • wilsons 2

    方法一:使用简单查询 js 实现 (推荐)

    1. 先把 js 代码添加到思源代码片段中,到这里下载 [js] 简单查询,让数据从此不再难查,支持显示多字段多视图
    2. 在编辑器中输入 {{}} 然后再弹出的输入框中输入以下 SQL 代码
    3. //!js return query(` SELECT '-' as 序号__no_w80_0, content as 标题__ref_1, CASE WHEN ial LIKE '%{: custom-avs="%' THEN '<font color=green>已加入</font>' ELSE '' END AS 是否已加入数据库__2, id as id__hide FROM blocks WHERE type = 'd' AND box = '${protyle.notebookId}' ORDER BY created desc; `, item);
    4. 说明,此代码会自动获取当前文档所在的当前笔记,且支持更灵活的样式
    5. 效果 image.png

    方法二:Query 挂件实现

    1. 先安装 Query 挂件
    2. 在编辑器中输入 /挂件 选 Query 挂件,然后在挂件中输入以下 SQL 代码
    3. SELECT '[' || content || '](siyuan://blocks/' || id || ')' AS __1____pre__文档标题, CASE WHEN ial LIKE '%{: custom-avs="%' THEN '已加入' ELSE '' END AS __2____pre__是否已加入数据库 FROM blocks WHERE type = 'd' AND box = '20240723175050-336994k' ORDER BY created desc;
    4. 说明,此挂件不能自从获取当前文档所在的笔记,需要手动复制笔记 id 到 box 字段里
    5. 效果 image.png

    PS: 截图字段少了“已”和“库”两个字,正确应该是 是否已加入数据库,代码中已修改,截图就不改了,能理解就行。

    另外,注意,思源默认最大只支持查询 64 条记录,需要在 设置-> 搜索-> 搜索结果显示数 里设置下数量或者 SQL 中加 limit,但如果筛选条数过多,可能出现卡顿现象。

    1 回复
  • 其他回帖
  • wilsons 1 1 赞同

    这个 query 挂件不好实现,但简单查询可以,比如

    //!js return query(` SELECT '-' as 序号__no_w80_0, content as 标题__ref_1, CASE WHEN ial LIKE '%{: custom-avs="%' THEN '<font color=green>已加入</font>' ELSE '' END AS 是否已加入数据库__2, id as id__hide, ial as ial__hide FROM blocks WHERE type = 'd' AND box = '${protyle.notebookId}' ORDER BY created desc `, item, '', async ({ row, rawRow, toRef }) => { //获取数据列表 const result = await fetchSyncPost("/api/av/getAttributeViewKeys", {id: rawRow.id}); let avs = ''; if (result && result.code === 0 && result.data.length > 0) { avs = result.data.map(av => toRef(av.avName, av.blockIDs[0]||'')).join(''); } row.已加入的数据库列表 = avs; } );

    效果

    image.png

    1 操作
    wilsons 在 2025-01-06 12:26:59 更新了该回帖
  • guodalu

    强啊佬,问下还能不能详细列出加入了哪些数据库

    1 回复

推荐标签 标签

  • 笔记

    好记性不如烂笔头。

    311 引用 • 796 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    584 引用 • 3537 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    493 引用 • 928 回帖
  • 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 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 566 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 83 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖 • 1 关注
  • 爬虫

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

    106 引用 • 275 回帖 • 1 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 759 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 68 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖
  • WiFiDog

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

    1 引用 • 7 回帖 • 603 关注
  • Java

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

    3194 引用 • 8214 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 3 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    169 引用 • 1527 回帖 • 1 关注
  • AngularJS

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

    12 引用 • 50 回帖 • 499 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    27 引用 • 196 回帖 • 28 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 394 关注