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

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

  • 思源笔记

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

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

    23421 引用 • 94750 回帖
  • Q&A

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

    8669 引用 • 39527 回帖 • 144 关注

相关帖子

被采纳的回答
  • 方法一:使用简单查询 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 更新了该回帖

推荐标签 标签

  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 899 回帖
  • GitLab

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

    46 引用 • 72 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    170 引用 • 513 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 750 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖 • 3 关注
  • 锤子科技

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

    4 引用 • 31 回帖 • 3 关注
  • WebClipper

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

    3 引用 • 9 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Scala

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

    13 引用 • 11 回帖 • 147 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 622 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 401 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • Openfire

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

    6 引用 • 7 回帖 • 104 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 416 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1739 回帖 • 2 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 50 关注
  • Docker

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

    493 引用 • 928 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    126 引用 • 169 回帖 • 1 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 5 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 671 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 662 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 794 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 18 关注
  • 房星科技

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

    6 引用 • 141 回帖 • 587 关注