用户登录

我想用一个简单的数据库记录一下上传的文件 .. 先给项目安装一个包 .. 名字是 lokijs ..

npm install lokijs --save

回到项目 ... 先导入 lokijs ... 起个名字可以叫做 loki .. 创建一个数据库 .. 名字是 db ,新建一个 loki .. 先指定一下数据库的名字 .. 比如 uploads/uploads.json .. loki 数据库可以是一个文件 .. 再给它一个选项 .. 把 persistenceMethod ,存储的方法设置成 fs ..

const db = new loki('uploads/uploads.json', { persistenceMethod: 'fs' })

loadCollection

loki 是文档类型的数据库,它里面可以包含一些 collection ,每个 collection 里面可以包含一些文档 .. 我们可以把上传的文件相关的信息存储在 loki 数据库的 collection 里面 ..

先定义一个函数 .. 名字是 loadCollection .. 它的功能就是加载数据库里面指定的 collection,也就是集合 .. 两个参数 .. 一个是 collectionName ... 集合的名字 .. 还有一个是 db ..

return 一个 Promise ... 一个回调 .. resolve ... 里面用一下 db 的 loadDatabase 加载一下需要的数据库 . 给它一个空白的选项参数 .. 再添加一个回调 .. 加载了数据库以后 .. 可以得到指定的集合 .. const collection 等于 .. 用一下 db 的 getCollection 这个方法 .. 把集合的名字告诉它 ... 或者 .. 用一下 db 的 addCollection ,去创建一个新的集合 ..

然后再把得到的集合交给 resolve ...

使用

先找到 profile 这个接口 .. 把这个函数变成一个 async 函数 ... 里面添加一个 collection ... await 等待执行 loadCollection 的结果 .. 集合的名字是 uploads .. 再把 db 交给它 ..

然后用一下 collection 的 insert 方法去往数据库的集合里面插入文档 .. 这个文档就是 request的 file .. 把返回的结果再起个名字 .. 比如 result ..

再执行一下 db 的 saveDatabase ,保存一下 ..

最后响应一个 result ...

测试

下面可以去试一下 .. 找一个 REST 客户端 .. 配置一个请求 .. 方法是 POST .. 地址是 localhost:8080/profile .. 添加一个请求主体 .. 类型是 form-data .. 添加一个字段 .. 名字应该是 avatar ... 对应的值是个文件 .. 选择文件 .. 找一张图像 ..

然后发送一下这个请求 ...

成功地上传了文件,并且会把文件相关的信息存储在了数据库里 .. 注意这里返回的内容 .. 里面有个 meta 属性 .. revistion 是修订版本 .. created 是文档创建的日期 .. 还有个 version .. 这个 $loki ,是文档的 id 号 ...

回到项目 ..

在 uploads 目录的下面,可以找到一个数据库文件 .. 就是这个 uploads.json ...

Promise,async,await 应用案例:Loki 数据库《 Node.js:上传文件 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点