这个需求用 Query 能实现吗,如何实现。
相关帖子
-
wilsons • • 2付费者 捐赠者
方法一:使用简单查询 js 实现 (推荐)
- 先把 js 代码添加到思源代码片段中,到这里下载 [js] 简单查询,让数据从此不再难查,支持显示多字段多视图
- 在编辑器中输入 {{}} 然后再弹出的输入框中输入以下 SQL 代码
-
//!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);
- 说明,此代码会自动获取当前文档所在的当前笔记,且支持更灵活的样式
- 效果
方法二:Query 挂件实现
- 先安装 Query 挂件
- 在编辑器中输入 /挂件 选 Query 挂件,然后在挂件中输入以下 SQL 代码
-
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;
- 说明,此挂件不能自从获取当前文档所在的笔记,需要手动复制笔记 id 到 box 字段里
- 效果
PS: 截图字段少了“已”和“库”两个字,正确应该是 是否已加入数据库,代码中已修改,截图就不改了,能理解就行。
另外,注意,思源默认最大只支持查询 64 条记录,需要在 设置-> 搜索-> 搜索结果显示数 里设置下数量或者 SQL 中加 limit,但如果筛选条数过多,可能出现卡顿现象。
-
方法一:使用简单查询 js 实现 (推荐)
- 先把 js 代码添加到思源代码片段中,到这里下载 [js] 简单查询,让数据从此不再难查,支持显示多字段多视图
- 在编辑器中输入 {{}} 然后再弹出的输入框中输入以下 SQL 代码
-
//!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);
- 说明,此代码会自动获取当前文档所在的当前笔记,且支持更灵活的样式
- 效果
方法二:Query 挂件实现
- 先安装 Query 挂件
- 在编辑器中输入 /挂件 选 Query 挂件,然后在挂件中输入以下 SQL 代码
-
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;
- 说明,此挂件不能自从获取当前文档所在的笔记,需要手动复制笔记 id 到 box 字段里
- 效果
PS: 截图字段少了“已”和“库”两个字,正确应该是 是否已加入数据库,代码中已修改,截图就不改了,能理解就行。
另外,注意,思源默认最大只支持查询 64 条记录,需要在 设置-> 搜索-> 搜索结果显示数 里设置下数量或者 SQL 中加 limit,但如果筛选条数过多,可能出现卡顿现象。
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; } );
效果
1 操作wilsons 在 2025-01-06 12:26:59 更新了该回帖