产品动态
云引擎增加对 MongoDB 数据库的支持
2019 年我们在「云引擎 - LeanDB」中加入了对 MySQL 数据库的支持,让数据存储与 LeanCloud 存储服务解耦合,使云引擎能够适应更多的定制化需求与开源解决方案。本月我们增加了对 MongoDB 数据库的支持,以方便更多开发者使用。
该功能已经在全部节点上线,后续我们还会增加对 ElasticSearch 的支持,敬请期待。
内容推荐
简简单单才是真,初试 Svelte
最近团队内部需要一个上传文件的 web 小工具,需要写一个简单的前端页面。像这样的小工具,如果引入 React 和 Vue,似乎太重了,所以想尝试下 Svelte 这个无框架之框架(最终会编译成不带框架的 JS 代码)。
点击查看原文 >>
2021 年值得关注的 8 个 Node.js 项目
无论是用于自己的应用,还是找开源项目贡献代码,这些都是不错的选择
点击查看原文 >>
常见问题
【数据存储】文件存储支持访问控制吗?
由于知道文件 URL 的任何用户都可以访问文件,因此需要为 _File
Class 和引用文件的 Class 设置合适的 Class 权限和 ACL,限制未授权用户获取到文件 URL。
如果希望能够更精细地控制文件访问权限,比如在一定时间后重新检查是否有权访问文件,建议使用支持访问权限控制的第三方文件存储服务商,然后直接在 LeanCloud 文件服务中保存一个外部的 URL。
注意 _File
表是不可变的,这意味着已经写入的 URL 不能修改。
但通常支持访问权限控制的文件存储服务商,实现访问权限的方式都是在现有的 URL,比如 <https://file.example.com/some-url
> 后额外传入一个 token 参数(这个 token 通常有时效性),比如 <https://file.example.com/some-url?token=xxxxxx
。>
所以客户端需要访问文件时,可以先从 LCFile
获取 url
属性后,再加上这个 token
参数,拼成最终的 URL 下载文件。
token
的获取需要自行在云引擎或自己的服务器上部署一个简单的生成访问 token
的 API 服务,客户端访问该 API 服务获取 token
。
【数据存储】如何修改文件存储中已有的文件?
文件存储对应的 _File
Class 是不可变数据,文件内容和相关元数据一经写入就无法修改,只能删除后重新上传或重新通过 URL 构建。
在使用外部文件(通过 URL 构建文件)的情况下,如果有频繁修改文件或相关元数据的需求,可以考虑如下方案:
自己实现一个存储外部文件相关信息的 Class,比如 ExternalFile
。在引用该文件的对象中设置 Pointer 字段,指向 ExternalFile
。注意,这种情况下,查询包含文件的对象时,如果希望同时获取文件信息,需要 include 相应字段(使用内置 _File
Class 的情况下会自动 include,不用另外指定)。
在需要引用文件的对象中,直接使用字符串类型保存 URL。这种情况下文件相关功能都需要自行实现。如果想要保存这个文件的相关元信息,还需要另外设计。比如在对象的其他字段上保存,或者将相应字段的类型从字符串改成 object,同时保存 URL 和元信息。注意,如此设计会导致应用的文件信息分散在需要用到文件的各个 Class 中,要对整个应用的文件进行批量查询和批量处理会比较麻烦。