看到了吧,这就是主界面,首先我们来看一下My Document的View部分。在看View之前,我们先看一下Mode的设计。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
我们设计了文件Schema,fileSchema,注意这里的sparse:true,意思是发散索引,即非聚集索引。
| 1 2 3 4 |
|
还有这里,我们预定义一个方法,当更新fileModel的时候,会先更新lasteditdate,再更新其他字段,因为我们更新的话,最后修改日期肯定是当前时间,也不需要用户每次都去传,所以这里预定义还是很有用处的。
接下来就是文件组和文件子组,总共两级,文件组和包含文件和子组,子组只能包含文件,所以这里设置及的时候,fileGroup中有个subgroup的定义,注意这里的subgroup它不是一个引用ref,而是嵌入的文档,是一个整体,但是它对file是只是一个主键的引用。
最后我们将这些定义好的model模块化公开出去。
| 1 2 3 4 5 6 7 8 9 |
|
接下来我们先看一下View页面的定义。
| 1 2 3 4 5 6 7 8 9 |
|
在我的文档我们包含了两个页面,dicview.jade和docedit.jade,看一下docview。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
这个页面包含一个Owned Document和Shared Document,我们看一下js部分。
| 1 2 3 4 5 6 7 8 9 10 11 |
|
页面load完成后,直接查询。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
拼好查询json对象后,post到api去查询,然后根据返回的数据去构造kendoPager,最后我们去构造文件列表,每个文件在双击的时候,都会跳转到index界面读取文件的内容展示在kendospread sheet上。我们看一下效果。
分页,点击2到第二页
分页是没有问题的,美观大方。OK,对于Shared Document的js代码,和上面的基本一样。
看上去只是多了个tooltip的说明,其实这个效果是bootstrap提供的,我们只需要写如下的代码即可。
| 1 2 3 4 5 6 7 8 |
|
OK最后我们看一下rest api。
| 1 2 3 |
|
根据url我们知道方法在filemng.js中。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
注意这里的查询,对于filename的模糊查询,用正则表达式。对于日期的查询,我们用gte和lte,大于和小于。最后我们先算出总数,再拿到分页的数据,将数据拼成json对象输出到客户端。
用robomongo查了一下,确实也是22条数据
共享的文件也只有2个
OK,今天就到这里,如果大家想要源码,估计要到实战15以后了,慢慢等吧。
本文详细介绍了使用Mongoose实现文件管理系统的模型设计过程,包括文件、文件组和文件子组的Schema定义,并展示了如何通过前端页面展示文件列表,以及相关的搜索和分页功能。






5227

被折叠的 条评论
为什么被折叠?



