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

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

  • 思源笔记

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

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

    23368 引用 • 94432 回帖 • 1 关注
  • Q&A

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

    8633 引用 • 39384 回帖 • 145 关注

相关帖子

被采纳的回答
  • 方法一:使用简单查询 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,但如果筛选条数过多,可能出现卡顿现象。

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 方法一:使用简单查询 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 回复
  • guodalu

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

    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 更新了该回帖

推荐标签 标签

  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 368 关注
  • VirtualBox

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

    10 引用 • 2 回帖 • 6 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 149 关注
  • gRpc
    11 引用 • 9 回帖 • 74 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 26 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 28 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 533 关注
  • Node.js

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

    139 引用 • 269 回帖 • 17 关注
  • Tomcat

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

    162 引用 • 529 回帖 • 4 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    77 引用 • 430 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 163 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 2 关注
  • 倾城之链
    23 引用 • 66 回帖 • 144 关注
  • MyBatis

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

    170 引用 • 414 回帖 • 380 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 320 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 587 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 40 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 101 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 635 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    223 引用 • 474 回帖
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖 • 3 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 640 关注
  • WiFiDog

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

    1 引用 • 7 回帖 • 597 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 310 关注
  • Kafka

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

    36 引用 • 35 回帖 • 5 关注