dataview如何查找链接属性的metadata
遇到的问题
现在有三个文件,打工人小张:小张.md
,就职公司阿里巴巴.md
,描述小张在阿里的职业经历的文件小张&阿里.md
。在小张&阿里.md
中有一系列的inline field,比如
就职时间:: 2022-10-01
离职时间:: 2023-07-01
求职人:: [[小张]]
就职公司:: [[阿里巴巴]]
职位:: 高级工程师
(由于front matter不支持链接的更新,所以就写在inline field里面。inline field全是这种一行一行的key:value描述)
实际上有很多人,也有很多公司,每个人的每一段从业经历都记录在每一个类似小张&阿里.md
的文件中。
现在想在小张.md
中写入代码,把所有他就职过的公司以及相关信息都table出来。我写的代码提示”No results to show for table query“
let employee = dv.current().file.link
let files=dv
.pages('"200.打工人"')
.filter(p => p.求职人 == employee)
let values=files.map(async(file)=>{
return [
file.就职时间,
file.离职时间,
file.就职公司,
file.职位
]
})
Promise.all(values).then((values)=>{
dv.table(["就职时间","离职时间","就职公司","职位"],values);
})
已尝试的解决方案
我理解可能涉及到值的类型,因为我如果把.filter(p => p.求职人 == employee)
换成.filter(p => p.职位 == "高级工程师")
,是能够table出来的,证明其他代码没问题。但是逻辑还是不对。
以上,由于零基础刚开始看javascript和typescript,引发两个思考:
1、link类型应该怎么写才可以?因为我把小张&阿里.md
和employee
console.log了一下,比对了属性是一样的,不太明白为什么会报错。
(这两个值难道不能完美匹配嘛)
2、
.filter
的参数要求不是很明白,因为我把里面写成.filter((p) => {p.职位 == "高级工程师"})
也会报错,难道()=>{}
或者p=>{}
这种复杂写法就不能被识别吗?这里可能设计到js基础知识,不是很理解。
希望大家来指点。