|
| 1 | +# 2.0.0 (2017-01-09) |
| 2 | +### Highlight |
| 3 | +* **全面支持微信小程序**:包括文件存储在内的所有功能均已支持微信小程序,用户系统还增加了小程序内一键登录的 API。详见 [在微信小程序中使用 LeanCloud](https://leancloud.cn/docs/weapp.html)。 |
| 4 | +* **Promise first**:Promise 风格的异步 API 已被社区广泛接受,此前回调参数优先于其他参数的设计已过时,因此我们去掉了对 Backbone 回调风格参数的支持。 |
| 5 | +* **支持对单次操作指定是否使用 masterKey**:此前使用 masterKey 是全局生效的,会导致无法充分利用 ACL 等内建的权限控制机制。此项改进将其生效范围细化到了单次操作。 |
| 6 | +* **移除 Node.js 0.12 支持**:Node.js 0.12 LTS 已停止维护,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。 |
| 7 | + |
| 8 | +### Breaking Changes |
| 9 | +* 移除了 Node.js 0.12 的支持,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。 |
| 10 | +* 移除了所有 Backbone 回调风格的参数,请使用 Promise 处理异步操作的结果与异常: |
| 11 | + <details> |
| 12 | + |
| 13 | + ```javascript |
| 14 | + // Backbone callback 回调风格的参数的用法 |
| 15 | + object.save(null, { |
| 16 | + success: function(object) {}, |
| 17 | + error: function(error, object) {}, |
| 18 | + }); |
| 19 | + |
| 20 | + // 需要替换为 |
| 21 | + object.save().then( |
| 22 | + function(object) {}, |
| 23 | + function(error) {} |
| 24 | + ); |
| 25 | + ``` |
| 26 | + |
| 27 | +* `AV.Promise` 现在是一个满足 Promises/A+ 标准的实现,所有非标准的方法已被移除,所有非标准的行为已被修正。关于标准 Promise 的更多信息推荐阅读 [《JavaScript Promise 迷你书》](http://liubin.org/promises-book/) |
| 28 | +* `AV.Query` 中的大部分 API 启用了更加严格的参数检查。特别的,对于以下 API,当指定 value 的值为 `undefined` 时会抛出异常(之前会直接忽略这个条件或限制) |
| 29 | + |
| 30 | + - 参数形如 `(key, value)` 类型的条件限制 API,如 `AV.Query#equalTo(key, value)` |
| 31 | + - `AV.Query#limit(value)` |
| 32 | + - `AV.Query#select(value)` |
| 33 | + |
| 34 | +* `AV.Query#get` 方法现在尊重 Class 的 get 权限设置(之前检查的是 find 权限) |
| 35 | + |
| 36 | +* `objectId`、`createdAt`、`updatedAt` 现在是只读字段,尝试 set 这些字段时 SDK 会抛出异常 |
| 37 | +* `object.get('id')` 与 `object.set('id', '')` 现在将会正确的读、写数据表中的 `id` 字段(之前映射的是 `objectId`)。你现在依然可以使用 `object.id` 来访问数据的 `objectId`。 |
| 38 | + |
| 39 | +* 如果你 extend 的 `AV.Object` 子类重写了 `validate` 方法,当属性无效时现在需要 throw 一个 Error(之前是 return 一个 Error)。相应的,`AV.Object#set` 方法如果 set 的值无效,需要通过 try catch 捕获异常(之前通过检查返回值是 false) |
| 40 | + <details> |
| 41 | + |
| 42 | + ```javascript |
| 43 | + // 之前的用法 |
| 44 | + var Student = AV.Object.extend('Student', { |
| 45 | + validate: function(attibutes) { |
| 46 | + if (attributes.age < 0) return new Error('negative age set'); |
| 47 | + } |
| 48 | + }); |
| 49 | + var tom = new Student(); |
| 50 | + if (tom.set('age', -1) === false) { |
| 51 | + console.error('something wrong'); |
| 52 | + } else { |
| 53 | + tom.save(); |
| 54 | + } |
| 55 | + |
| 56 | + // 现在的用法 |
| 57 | + var Student = AV.Object.extend('Student', { |
| 58 | + validate: function(attibutes) { |
| 59 | + if (attributes.age < 0) throw new Error('negative age set'); |
| 60 | + } |
| 61 | + }); |
| 62 | + var tom = new Student(); |
| 63 | + try { |
| 64 | + tom.set('age', -1); |
| 65 | + } catch (error) { |
| 66 | + console.error(error.message); |
| 67 | + } |
| 68 | + tom.save(); |
| 69 | + ``` |
| 70 | + |
| 71 | +* 上传文件时不再额外地向文件的 metaData 中写入 mime_type,之前通过 metaData 获取 mime_type 的用法需要更新: |
| 72 | + <details> |
| 73 | + |
| 74 | + ```javascript |
| 75 | + // 之前的用法 |
| 76 | + file.metaData('mime_type'); |
| 77 | + |
| 78 | + // 现在的用法 |
| 79 | + file.get('mime_type'); |
| 80 | + ``` |
| 81 | + |
| 82 | +* 移除了 deprecated 的 API,包括: |
| 83 | + - `AV.Object#existed` |
| 84 | + - `AV.User.requestEmailVerfiy` (typo) |
| 85 | + - `AV.useAVCloudCN` |
| 86 | + - `AV.useAVCloudUS` |
| 87 | + - `AV._ajax` |
| 88 | + - `AV._request` |
| 89 | + |
| 90 | +### Features |
| 91 | +* 支持微信小程序 |
| 92 | +* 增加了 `AV.User.loginWithWeapp()` 与 `AV.User#linkWithWeapp()` ,支持在微信小程序中登录 |
| 93 | +* 增加了 `AV.User#isAuthenticated()`,该方法会校验 sessionToken 的有效性, 废弃 `AV.User#authenticated()` |
| 94 | +* 绝大部分会发起网络请求的 API(如保存一个对象)支持通过 `option.useMasterKey` 参数指定该次操作是否要使用 masterKey,设置了该选项的操作会忽略全局的 useMasterKey 设置 |
| 95 | +* 去掉了 `Object.destroyAll` 方法要求所有删除的对象属于同一个 Class 的限制 |
| 96 | +* `Object.register()` 方法增加了第二个参数允许指定所注册的 Class 的名字,详情参见 [Object.register - API 文档](https://leancloud.github.io/javascript-sdk/docs/AV.Object.html#.register)。 |
| 97 | +* 上传文件的 mime_type 现在由服务端进行判断从而支持更多的文件类型 |
| 98 | +* 增加了 sourcemaps |
| 99 | + |
| 100 | +### Bug Fixes |
| 101 | +* 修复了在进行以下操作时可能出现 `URI too long` 异常的问题 |
| 102 | + * 使用 `Query#containsAll`、`Qeruy#containedIn` 或 `Query#notContainedIn` 方法时传入了一个大数组 |
| 103 | + * 使用 `Object.destroyAll` 方法批量删除大量对象 |
| 104 | +* 修复了 `Object.set(key, value)` 方法可能会改变(mutate)`value` 的问题 |
| 105 | +* 修复了查询结果中 File 没有被正确解析的问题 |
| 106 | +* 修复了在 React Native 中使用 `AV.setProduction` 方法会导致后续操作引起 crash 的问题 |
| 107 | +* 修复了在 React Native 上传大文件可能出现 `invalid multipart format: multipart: message too large` 异常的问题 |
| 108 | +* 修复了 `AV.Insight.startJob` 方法中 saveAs 参数未生效的问题 |
| 109 | +* 修复了抛出 code == -1 的异常时 error.message 可能缺失的问题 |
| 110 | +* 修复了应用内社交模块的方法在未登录状态下传入了 sessionToken 仍然抛未登录异常的问题 |
| 111 | + |
| 112 | +测试版本的更新日志: |
| 113 | +<details> |
| 114 | + |
| 115 | +## 2.0.0 (2017-01-09) |
| 116 | +### Bug Fixes |
| 117 | +* 修复了在 React Native 及小程序中上传大文件可能出现 `invalid multipart format: multipart: message too large` 异常的问题 |
| 118 | +* 修复了某些情况下上传的文件 mime_type 不正确的问题 |
| 119 | + |
1 | 120 | # 2.0.0-rc.0 (2016-12-30) |
2 | 121 | ### Breaking Changes |
3 | 122 | * 移除了 Node.js 0.12 的支持,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。 |
|
52 | 171 | ## 2.0.0-beta.3 (2016-11-8) |
53 | 172 | ### Bug Fixes |
54 | 173 | * 修复了在微信小程序真机上运行时抛 `ReferenceError: Can't find variable: FormData` 异常的问题 |
55 | | -* 修复了 2.0.0 中引入的 `AV.Query#select`、`AV.Query#include` 不支持多个参数的问题 |
| 174 | +* 修复了 2.0.0-beta.0 中引入的 `AV.Query#select`、`AV.Query#include` 不支持多个参数的问题 |
56 | 175 |
|
57 | 176 | ## 2.0.0-beta.2 (2016-10-20) |
58 | 177 | ### Features |
|
64 | 183 |
|
65 | 184 | # 2.0.0-beta.0 (2016-9-29) |
66 | 185 | ### Breaking Changes |
67 | | -* 移除了所有 Backbone callbacks 回调风格的参数,请使用 Promise 处理异步操作的结果: |
| 186 | +* 移除了所有 Backbone 回调风格的参数,请使用 Promise 处理异步操作的结果与异常: |
68 | 187 | <details> |
69 | 188 |
|
70 | 189 | ```javascript |
|
121 | 240 | - `AV.Query#limit(value)` |
122 | 241 | - `AV.Query#select(value)` |
123 | 242 |
|
124 | | - |
125 | 243 | * `AV.Query#get` 方法现在尊重 Class 的 get 权限设置(之前检查的是 find 权限) |
126 | 244 |
|
127 | 245 | * (intarnal) `AV.User#_linkWith` 的第二个参数中的 `options.authData` 字段提升为第二个参数 |
|
156 | 274 | * 对象存储功能支持微信小程序 |
157 | 275 | * 绝大部分会发起网络请求的 API(如保存一个对象)支持通过 `option.useMasterKey` 参数指定该次操作是否要使用 masterKey,设置了该选项的操作会忽略全局的 useMasterKey 设置 |
158 | 276 |
|
| 277 | +</details> |
| 278 | + |
159 | 279 | ## 1.4.0 (2016-9-1) |
160 | 280 | 相比于 v1.4.0-beta.0: |
161 | 281 | * 修复了 `AV.File#save` 方法的 `onprogress` 参数失效的问题 |
|
0 commit comments