> 本篇内容:`dv.list`,`dv.pages` 问:答叔,问你哦,我想看到我在OB里面所有的文件名,用dvjs该怎么写? 答: ```js dv.list(dv.pages("").file.name) ``` 问:这是为啥子? 答:`dv`是dvjs里用来进行对dv的系统的查询和命令所使用的的入口。`dv.pages`的功能是,你给它一个搜索字段,它就会把所有符合要求的文件都给你列出来。而外面的`dv.list()`则会把这些内容以列表的形式实际显示出来。 问:哦 (⊙o⊙)… 答:…… 问:我跑了一下,死机了。 答:你文件太多,又一次性全都显示,可不死机咋的。 问:那你不早说。 答:早点遇上,长个记性。下次没有耐心可以直接退掉重新进软件,然后记得别点预览,改了就好。 问:那里面那个`""`是啥?看上去有点像一只土拨鼠的脸。 答:在JavaScript里面,`"`是用来标记字符串的两段的。在这里,`""`表示的是一个里面啥也没有的字符串,也就是所谓的空字符串。而`dv.pages`规定,如果你喂给它这个空的字符串,它就会给你吐出你库里面_所有_的文件。 问:那括号呢? 答:JS里面用来表示函数调用的标记,你可以大概理解成,括号里面的是指令的明细内容,括号本身则是“动手”的意思。 问:……突然黑社会化。 问:那如果我不想要我_所有_的文件呢,比如,如果我只想要上面带有 #学习 这个标签的文件呢? 答:那就是`dv.pages("#学习")`。 问:只能放字符串吗? 答:是的呢亲。 问:如果我想要某个文件夹里面的内容?比如`同人`这个文件夹? 答:……? 问:咳咳,比如`电脑`这个文件夹。 答:在搜索文件夹的时候,要注意,因为DV本身对于文件夹的搜索就要求是字符串格式,所以在DVJS里面是两层字符串:`dv.pages('"电脑"')`。 问:我感到迷茫。奇怪的引号变多了。首先,为什么是不同的引号? 答:括号里面的第一层单引号——不要问我为什么单引号在双引号外面,想知道的话请去进一步学习js——和之前的双引号一样可以用来标记字符串的开始和结束。然后,里面的这一层则是告诉dv,我们要找的是`"电脑"`这个信息来源。DV则会把用引号包着的这个`电脑`正确诠释为一个文件夹。 问:…… 答:摊手,这个在DV里面稍微简单一些,你就记住是DVJS里面很多地方都要额外加一层引号就是了。 问:……好吧。那,如果我想要`电脑`文件夹里,有`学习`这个标签的文件呢。 答:可以用`and`,`or`和`!`这类的布尔关键字来组合。 问:and是且,or是或,感叹号是啥,非常的意思? 答:不常,就只是……非。不是说你抽卡的那个非,是“否定”的那个非。 问:所以之前的那个要求就是`dv.pages('"电脑" and #学习')`? 答:恭喜你学会抢答。 问:可这儿只有我们两个。 答:…… 问:`dv.pages()`里面还能放什么? 答:用`[[文件名]]`可以得到所有_连接至_这个文件的文件。用`outgoing([[文件名]])`则是这个文件_向外的_所有链接。就这三种主要的,没了。 问:那我如果知道文件名字,就想指定这一个文件呢? 答:把复数变成单数,`dv.page("文件名")`。 问:那`dv.pages()`说过了,那后面那个`.file.name`是啥? 答:`dv.pages()`返回给你的是一个复杂的容器,你可以理解成一个盒子,盒子里面装着你各种可能用得到或者用不到的东西。比如`.file`就是关于你这篇文档的一些元数据。 问:元数据? 答:比如如果你这篇文档里有某几个tag,这篇文章的路径,文章的标题,创建时间和修改时间,这些都不是有关内容,而是有关容器的数据。 问:我觉得标题什么的挺内容的了。 答:不要在意这些细节。 问:那个`.`是干啥用的? 答:你可以把`.`理解成汉字里的“的”。 问:所以`dv.pages('"电脑"').file.name`就是……电脑文件夹里的文件的名字? 答:差不多。 问:那`.file`里面还有啥? 答:请看[原文档](https://blacksmithgu.github.io/obsidian-dataview/data-annotation/)这里。 问:我感觉你说了好多,但是感觉我什么也还没学会做。 答:哈哈哈哈哈哈哈哈。 问:喂 (#\`O′) [[DataviewJS - 从入门到退坑 02|下一篇]]