我是一个思源笔记新手, 希望查询到最近一个月内创建的文档.
但我发现我似乎只能查询到文档的内容, 而查不到文档的标题.
而且我似乎只能 select *, 而并不能自己定制查出来哪些字段.
我是一个思源笔记新手, 希望查询到最近一个月内创建的文档.
但我发现我似乎只能查询到文档的内容, 而查不到文档的标题.
而且我似乎只能 select *, 而并不能自己定制查出来哪些字段.
这是我之前写的渲染指定字段的 SQL 查询脚本。
使用方法:在编辑器中输入 {{}} 然后把下面的代码粘贴到输入框即可
//!js return (async () => { // sql查询语句 // 查询过去去30天的文档 const sql = `SELECT * FROM blocks WHERE type = 'd' AND created >= strftime('%Y%m%d%H%M%S', 'now', 'localtime', '-30 days') order by created desc`; // 查询最近一个月内创建的文档 //const sql = `SELECT * FROM blocks WHERE type = 'd' AND created >= strftime('%Y%m%d%H%M%S', 'now', 'localtime', '-1 month') order by created desc`; // 查询数据库 const result = await query(sql); // 渲染结果,更多字段看下面的renderFields函数的注释说明 return renderFields('content'); /////// 功能函数区 /////// // 渲染字段 // 调用示例 // renderFields('content, created'); 或 renderFields(['content', 'created']) // 或 renderFields('content,created', (row) => {row['created'] = row['created'].replace(/(\d{4})(\d\d)(\d\d)\d+/, '$1-$2-$3');}); function renderFields(fields, callback, style) { let html = ''; if(typeof result === 'string') return error(result); result.forEach(item => { if(callback) callback(item); if(typeof fields === 'string') { fields = fields.split(',').map(field => field.trim()); } let fieldsHtml = ''; fields.forEach((field, i) => { if(field === '') return; if(fieldsHtml === '') { fieldsHtml += `<span data-type="block-ref" data-id="${item.id}" data-subtype="d" style="${style}">${item[field]}</span>`; } else { fieldsHtml += `<span style="margin-left:20px;${style}">${item[field]}</span>`; } }); html += `<div class="protyle-wysiwyg__embed" data-id="${item.root_id}"><div data-node-index="1" data-type="NodeParagraph" class="p" updated=""><div contenteditable="true" spellcheck="false">${fieldsHtml}</div><div class="protyle-attr" contenteditable="false"></div></div></div>`; }); return render(html || '<div style="color:var(--b3-theme-secondary);margin-top:3px;">没有找到符合条件的内容</div>'); } // 查询SQL函数 async function query(sql) { const result = await fetchSyncPost('/api/query/sql', { "stmt": sql }); if (result.code !== 0) { console.error("查询数据库出错", result.msg); return "查询数据库出错:" + result.msg; } return result.data; } // 渲染结果函数 function render(html, style) { onRender('.b3-form__space--small').then((container) => { style = style || ''; if(style){ html = `<div class="protyle-wysiwyg__embed" style="${style}">${html}</div>`; } container.outerHTML = html; }); return []; } // 渲染错误输出 function error(html, style) { return render(`<div style="margin-top:3px;">${html}</div>`, style || 'color:red;'); } // 监听dom渲染 function onRender(selector) { return new Promise(resolve => { const check = () => { let el = item.querySelector(selector); if (el) resolve(el); else requestAnimationFrame(check); }; check(); }); } })();
效果如下:
这是我之前写的渲染指定字段的 SQL 查询脚本。
使用方法:在编辑器中输入 {{}} 然后把下面的代码粘贴到输入框即可
//!js return (async () => { // sql查询语句 // 查询过去去30天的文档 const sql = `SELECT * FROM blocks WHERE type = 'd' AND created >= strftime('%Y%m%d%H%M%S', 'now', 'localtime', '-30 days') order by created desc`; // 查询最近一个月内创建的文档 //const sql = `SELECT * FROM blocks WHERE type = 'd' AND created >= strftime('%Y%m%d%H%M%S', 'now', 'localtime', '-1 month') order by created desc`; // 查询数据库 const result = await query(sql); // 渲染结果,更多字段看下面的renderFields函数的注释说明 return renderFields('content'); /////// 功能函数区 /////// // 渲染字段 // 调用示例 // renderFields('content, created'); 或 renderFields(['content', 'created']) // 或 renderFields('content,created', (row) => {row['created'] = row['created'].replace(/(\d{4})(\d\d)(\d\d)\d+/, '$1-$2-$3');}); function renderFields(fields, callback, style) { let html = ''; if(typeof result === 'string') return error(result); result.forEach(item => { if(callback) callback(item); if(typeof fields === 'string') { fields = fields.split(',').map(field => field.trim()); } let fieldsHtml = ''; fields.forEach((field, i) => { if(field === '') return; if(fieldsHtml === '') { fieldsHtml += `<span data-type="block-ref" data-id="${item.id}" data-subtype="d" style="${style}">${item[field]}</span>`; } else { fieldsHtml += `<span style="margin-left:20px;${style}">${item[field]}</span>`; } }); html += `<div class="protyle-wysiwyg__embed" data-id="${item.root_id}"><div data-node-index="1" data-type="NodeParagraph" class="p" updated=""><div contenteditable="true" spellcheck="false">${fieldsHtml}</div><div class="protyle-attr" contenteditable="false"></div></div></div>`; }); return render(html || '<div style="color:var(--b3-theme-secondary);margin-top:3px;">没有找到符合条件的内容</div>'); } // 查询SQL函数 async function query(sql) { const result = await fetchSyncPost('/api/query/sql', { "stmt": sql }); if (result.code !== 0) { console.error("查询数据库出错", result.msg); return "查询数据库出错:" + result.msg; } return result.data; } // 渲染结果函数 function render(html, style) { onRender('.b3-form__space--small').then((container) => { style = style || ''; if(style){ html = `<div class="protyle-wysiwyg__embed" style="${style}">${html}</div>`; } container.outerHTML = html; }); return []; } // 渲染错误输出 function error(html, style) { return render(`<div style="margin-top:3px;">${html}</div>`, style || 'color:red;'); } // 监听dom渲染 function onRender(selector) { return new Promise(resolve => { const check = () => { let el = item.querySelector(selector); if (el) resolve(el); else requestAnimationFrame(check); }; check(); }); } })();
效果如下:
知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。
Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。
PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。
CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。
BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。
笔记整理交给我,一心只读圣贤书。
宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”
网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。
Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。
PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。
Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。
Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。
据说 99% 的性能瓶颈都在数据库。
Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。
Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。
支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
安全永远都不是一个小问题。
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。