UNPKG

58.7 kBMarkdownView Raw
1## 4.12.2(2022-02-10)
2
3### Bug Fixes
4
5- 修复遍历 Class 时缺少最后一条数据的问题。
6- 修复 AV.Error 类型定义的错误。
7
8## 4.12.1(2022-02-09)
9
10### Bug Fixes
11
12- 修复某些情况下保存属性中包含 AV.File 的 AV.Object 时报错的问题。
13
14# 4.12.0(2021-09-16)
15
16### Features
17
18- `AV.Object.saveAll` 支持 `fetchWhenSave` 参数。
19- 添加 `AV.Query#findAndCount` 方法,用于同时获取查询结果和符合查询条件的总数。
20
21## 4.11.1(2021-06-09)
22
23### Bug Fixes
24
25- 修复了成功保存 `AV.File` 后没有设置文件的 `objectId``url` 属性的问题。
26- 修复了 `AV.File#save` 返回值可能不正确的问题。
27
28# 4.11.0(2021-06-09)
29
30### Features
31
32- 支持向国内节点保存大于 1GB 的文件。
33
34### Bug Fixes
35
36- 使用 `AV.init` 初始化 SDK 时,若未提供 `production` 参数,不再将目标环境重置为生产环境。
37
38## 4.10.1(2021-03-18)
39
40### Bug Fixes
41
42- 修复了文件保存失败时仍能获取到 URL 属性的问题。
43
44# 4.10.0(2021-01-19)
45
46### Features
47
48- 使用 masterKey 上传文件时,可自定义文件的 key :
49 ```js
50 const file = new AV.File(name, data);
51 file.save({
52 useMasterKey: true,
53 key: 'custom-file-key',
54 });
55 ```
56
57### Internal Changes
58
59- 升级了 browser 、node 和 weapp 平台的 Adapters:
60 package|from|to
61 -|-|-
62 @leancloud/adapter-types|`4.0.0`|`5.0.0`
63 @leancloud/platform-adapters-browser|`1.4.0`|`1.5.2`
64 @leancloud/platform-adapters-node|`1.4.0`|`1.5.2`
65 @leancloud/platform-adapters-weapp|`1.5.0`|`1.6.1`
66 使用其他依赖 `@leancloud/adapter-types@5` 的 Adapters 也需要升级 `leancloud-storage` 到 4.10.0 。
67
68# 4.9.0(2020-12-18)
69
70### Bug Fixes
71
72- 修复了使用 `AV.Object.saveAll` 批量保存数据时,部分操作失败会影响后续操作执行的问题。
73
74### Internal Changes
75
76- 升级了内部依赖:
77 package|from|to
78 -|-|-
79 @leancloud/adapter-types|`3.0.0`|`4.0.0`
80 @leancloud/platform-adapters-browser|`1.1.0`|`1.4.0`
81 @leancloud/platform-adapters-node|`1.1.0`|`1.4.0`
82 @leancloud/platform-adapters-weapp|`1.2.0`|`1.5.0`
83 leancloud-realtime|`5.0.0-rc.2`|`5.0.0-rc.4`
84
85## 4.8.3(2020-12-15)
86
87### Internal Changes
88
89- 修改了上传文件时 file key 的生成方式。
90
91## 4.8.2(2020-12-09)
92
93### Bug Fixes
94
95- 修复 `AV.SearchQuery#find` 未正确处理 `AuthOptions` 的问题。
96
97## 4.8.1(2020-12-03)
98
99### Bug Fixes
100
101- 修复构造 `AV.SearchQuery` 时省略 `className` 会抛出异常的问题。
102
103### Bug Fixes
104
105- 修复 `AV.SearchQuery#highlights` 不能正确处理数组参数的问题。
106
107# 4.8.0(2020-11-19)
108
109### Features
110
111- 添加 `AV.Friendship` 以支持好友所需的各项功能。
112- 添加 `AV.User#getFollowersAndFollowees` 方法用于查询指定用户的 followers 和 followees 。
113
114### Internal Changes
115
116- 现在保存通过 `AV.File.withURL` 方法创建的文件等同于直接在 \_File 中添加一行数据,不再自动生成 `mime_type`。
117
118# 4.7.0(2020-07-14)
119
120### Features
121
122- 增加下列方法以支持在修改手机号之前进行验证:
123 - `AV.User.requestChangePhoneNumber`
124 - `AV.User.changePhoneNumber`
125
126## 4.6.1 (2020-06-05)
127
128### Bug Fixes
129
130- 修复了在 Node.js 中运行时错误的提示不应使用 masterKey 并无法找到 `AV.Cloud.useMasterKey` 方法的问题。
131
132# 4.6.0 (2020-05-28)
133
134### Features
135
136- 增加了以下平台无关的小程序登录方法,通过各平台 Adapters 生成的 `authInfo` 进行登录:
137 - `AV.User.loginWithMiniApp`
138 - `AV.User#loginWithMiniApp`
139- 增加了 `AV.User.mergeUnionId` 方法用于合并 `authInfo` 与 `unionId`。
140
141### Bug Fixes
142
143- 修复了 React Native 上导入 SDK 抛异常的问题。详细的安装步骤参见 [《JavaScript SDK 安装指南 · React Native》](https://url.leanapp.cn/react-native-setup)。
144- 修复了通过 `AV.User.updatePassword` 更新密码后,未能同步更新当前用户的 `sessionToken` 的问题。
145- 修复了调用 `AV.User.become` 时,传递空 `sessionToken` 未抛异常的问题。
146
147## 4.5.3 (2020-04-03)
148
149### Bug Fixes
150
151- 修复了中国节点部分情况下文件上传失败但仍然返回了成功的问题。
152- 补充了平台无关版本的预编译文件:`av[-live-query]-core[-min].js`。
153
154## 4.5.2 (2020-03-27)
155
156### Bug Fixes
157
158- 修复了微信小程序中引入 SDK 抛异常 `Cannot read property 'core-js_shared' of undefined` 的问题。
159
160## 4.5.1 (2020-03-24)
161
162### Bug Fixes
163
164- 修复了不兼容 IE 11 等不支持 Promise 的运行环境的问题。
165- 修复了 TypeScript 找不到 `@leancloud/adapter-types` 模块的问题。
166
167### Internal Changes
168
169- `AV.Promise` 现在使用 `core-js` 的实现代替了 `es6-promise`。
170
171# 4.5.0 (2020-03-18)
172
173SDK [计划](https://github.com/leancloud/javascript-sdk/wiki/Roadmap) 在 5.0 中支持同时访问多个应用。在此之前,尽管当前版本中重复初始化 SDK 存在导致预期之外且难以追查的问题的风险,改变当前访问的应用的能力在很多场景下依然是有价值的。因此在这个版本中 SDK 允许通过多次调用 `init` 方法进行重新初始化。
174
175### Features
176
177- 多次调用 `init` 方法不再抛出「SDK 已初始化」的异常,而是会打印一条警告日志。
178
179# 4.4.0 (2020-03-17)
180
181这个版本中 SDK 新增了运行环境无关的版本,开发者可以在此基础上应用目标运行环境的 Adapters 来适配相应的运行平台。
182
183同时从这个版本开始 SDK 对各类平台的适配策略从之前的内置支持转为通过独立的第三方 Adapters 库支持。各个平台的 Adapters 将由 LeanCloud 与社区共同维护、独立演进、拥有独立的版本号。对于目前已经内置支持的平台,新版的 SDK 依然保留内置了对应的预编译版本,因此这些平台可以沿用之前的使用方式(React Native 除外,因为目前内置的适配实现使用的 API 已经被标记为「不赞成使用」)。
184
185### Features
186
187- 增加 `/core` 与 `/live-query-core` 入口,通过这种方式引入的 SDK 不包含运行环境相关的逻辑,需要配置 Adapters 后才能运行。
188- React Native 的适配现在通过独立的 Adapters 库(`@leancloud/platform-adapters-react-native`)支持,因此这个版本的 SDK 中去掉了内置的预编译的 React Native 版本。
189
190 <details>
191 <summary>
192 适配 React Native 示例
193 </summary>
194
195 ```js
196 const AV = require('leancloud-storage/core');
197 const reactNativeAdapters = require('@leancloud/platform-adapters-react-native');
198 AV.setAdapters(reactNativeAdapters);
199 ```
200
201### Bug Fixes
202
203- 修复了在浏览器中通过引入预编译的 `av-live-query.js` 引入的 SDK 抛异常的问题。这个问题是 v4.3.1 中引入的。
204
205### Internal Changes
206
207- hookKey 现在需要在初始化时传入,SDK 不再自动从环境变量获取其可能的值。
208
209## 4.3.1 (2020-03-12)
210
211这个版本继续了对「更多运行环境支持」的探索,将 SDK 内置的多平台支持使用新的 `Adapter` 模式进行了重构。SDK 支持的运行平台、使用方法都没有变化。
212
213### Bug Fixes
214
215- 修复了进行 Relation 查询时抛 `_extraOptions is undefined` 异常的问题。这个问题是 v4.0.0 中引入的。
216- `setAdaptors` 接口被重命名为 `setAdapters`。
217
218# 4.3.0 (2020-03-09)
219
220### Features
221
222- 增加了 `AV.setAdaptors`(已在 v4.3.1 中重命名为 `setAdapters`) 方法用于配置运行环境适配器。
223
224 作为正在进行的对「更多运行环境支持」探索的第一步,这个版本的 SDK 所以对平台提供的 API 的依赖被抽象为可替换的 `Adapter`。开发者可以配置全部或一部分 `Adapter` 以支持包括小程序在内的各类平台。
225
226- 为 `AV.init` 的 `serverURLs` 参数增加了一个同义参数 `serverURL`。
227
228# 4.2.0 (2020-01-07)
229
230### Features
231
232支持 QQ 小程序。
233
234- 微信小程序 SDK 现已兼容 QQ 小程序,并新增了以下登录相关的方法:
235 - `AV.User.loginWithQQApp`
236 - `AV.User.loginWithQQAppWithUnionId`
237 - `AV.User#loginWithQQApp`
238 - `AV.User#loginWithQQAppWithUnionId`
239 - `AV.User#associateWithQQApp`
240 - `AV.User#associateWithQQAppWithUnionId`
241
242### Bug fixes
243
244- 修复了多处 TypeScript 定义文件的错误,SDK 要求的 TypeScript 最低版本现在为 3.0。
245
246# 4.1.0 (2019-12-10)
247
248### Features
249
250- 新增了 `AV.Object#dirtyKeys` 方法获取本地修改过的属性名。`Object#hasChanged` 与 `Object#changedAttributes` 方法已被移除,请使用 `AV.Object#dirty` 与 `AV.Object#dirtyKeys` 代替。
251
252### Bug fixes
253
254- 修复了云引擎中初始化依然要求指定服务器地址的问题。
255
256## 4.0.1 (2019-12-02)
257
258### Bug fixes
259
260- 修复了指定 key fetch 时,服务端已删除的 key 没有被正确清理的问题。
261- 补充了 `AV.Cloud.useMasterKey` 的 TypeScript 定义。
262
263# 4.0.0 (2019-10-31)
264
265### BREAKING CHANGES
266
267- 对于中国节点应用,初始化 SDK 时必须通过 `serverURLs` 参数指定服务器地址。中国节点的应用必须要绑定自有域名后才能使用,这个改动是为让没有指定服务器地址时的异常更加明确。国际版应用不受影响。
268- SDK 使用的域名更新。国际版应用新增 `app-router.com`,中国节点应用不受影响。`app-router.leancloud.cn` 均不再使用。如果国际版应用在微信小程序等需要域名白名单的平台上运行,需要更新白名单配置,开发者可以访问应用的 LeanCloud 控制台获取最新的域名列表。
269- `AV.Query#toJSON` 方法现在返回完整的信息,可以通过新增的 `AV.Query.fromJSON` 方法反序列化为 `AV.Query`。原 `AV.Query#toJSON` 方法已被重命名为一个内部方法 `AV.Query#_getParams`。
270- 移除了 Bower 支持。
271
272### Features
273
274- 新增了 `AV.Query.fromJSON` 方法可以通过一个 JSON 构造一个 `AV.Query`。与 `AV.Query#toJSON` 结合可以实现在服务端与客户端之间传输 `AV.Query`。
275
276### Bug fixes
277
278- 修复了在 `AV.init` 时指定 `production` 不生效的问题。
279- 修复了多处 TypeScript 定义问题。
280
281# 3.15.0 (2019-08-05)
282
283### Features
284
285- 排行榜在获取排名结果时可以通过 `includeUserKeys` 选项同时返回 Pointer 类型的用户属性。
286
287### Bug fixes
288
289- 修复了一处导致在 Taro 中引入 SDK 抛异常的问题
290- 修复了多处 TypeScript 定义问题。
291
292## 3.14.1 (2019-07-04)
293
294### Bug fixes
295
296- 修复了 LiveQuery server 配置异常导致不可用的问题。
297
298# 3.14.0 (2019-06-30)
299
300### Features
301
302- 增加了一组序列化与反序列化方法 `AV.parse` 与 `AV.stringify`。
303- 排行榜增加了 `AV.Leaderboard#count` 方法用于获取参与排行的用户总数。
304- 增加了手动启用、停用调试模式的开关:
305
306 ```js
307 AV.debug.enable();
308 AV.debug.disable();
309 ```
310
311 原有在浏览器中使用 localStorage,在 Node.js 中使用环境变量启用调试模式的方式仍然可用。
312
313- 扩展了初始化时的 serverURLs 参数,现在允许指定 LiveQuery 服务的 server。
314
315### Bug fixes
316
317- 修正了 LiveQuery 的默认 server。
318- `AV.Query#get` 方法传入 falsy objectId 时现在有了更准确与一致的异常信息。
319- 修复了多处 TypeScript 定义问题。
320
321## 3.13.2 (2019-05-14)
322
323### Bug fixes
324
325- 修复了 `AV.Object.createWithoutData` 方法返回对象类型始终是 `AV.Object` 的问题。
326- 修复了多处 TypeScript 定义问题。
327
328## 3.13.1 (2019-05-08)
329
330### Bug fixes
331
332- 优化了 `AV.Object` 静态方法的 TypeScript 定义。
333
334# 3.13.0 (2019-04-17)
335
336### Features
337
338- 小程序用户系统增加了 UnionId 支持。
339 - 一键登录 API `AV.User[.#]loginWithWeapp` 增加了新的参数 `preferUnionId`。设置了该参数为 `true` 且该小程序绑定了微信开放平台帐号,那么在满足以下条件时会自动使用用户的 UnionId 登录。
340 - 微信开放平台帐号下存在同主体的公众号,并且该用户已经关注了该公众号。
341 - 微信开放平台帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。
342 - `AV.User#linkWithWeapp` 重命名为 `AV.User#associateWithWeapp` 与其他关联第三方 API 保持统一的命名风格。同时支持新参数 `preferUnionId`。
343 - 增加了 `AV.User[.#]loginWithWeappWithUnionId` 与 `AV.User#associateWithWeappWithUnionId` 方法。用于支持开发者在通过其他方式自行拿到用户的 UnionId 后在客户端登录或关联用户。
344- 增加了 `AV.User.loginWithEmail` 方法用于明确指定使用 Email 与密码登录。
345
346### Bug fixes
347
348- `AV.File#set` 与 `AV.File#setACL` 现在会正确地返回当前实例(`this`)了。
349
350# 3.12.0 (2019-03-01)
351
352### Features
353
354- `AV.File#save` 方法增加了 `keepFileName` 方法允许保留下载文件的文件名。
355
356 <details>
357 <summary>
358 示例
359 </summary>
360
361 ```js
362 new AV.File('file-name.ext', source).save({ keepFileName: true });
363 // https://your-file-domain/5112b94e0536e995741c/file-name.ext
364
365 new AV.File('file-name.ext', source).save();
366 // https://your-file-domain/5112b94e0536e995741c.ext
367 ```
368
369 </details>
370
371- 增加了 `AV.Object#revert` 方法撤销部分或全部修改了但未保存(save)的改动。
372
373### Bug fixes
374
375- 修复了 `AV.Object#set` 的 TypeScript 定义问题。
376
377## 3.11.1 (2018-12-26)
378
379### Bug fixes
380
381- 修复了在初始化时设置了 serverURLs,但仍然会使用缓存的默认配置的问题。
382- 修复了 `AV.Object#clone` 与 `AV.Error` 的 TypeScript 定义问题。
383
384# 3.11.0 (2018-11-08)
385
386### Features
387
388- 增加了 `AV.LiveQuery.pause` 与 `AV.LiveQuery.resume` 方法。这两个方法可以用于在网络变化或者应用切换后台时主动通知 SDK 断开/恢复 LiveQuery 的连接。
389- 排行榜增加了删除用户分数与排名的方法 `AV.Leaderboard.deleteStatistics`。
390
391### Bug fixes
392
393- 修复了 `AV.File#save` 方法参数不尊重 AuthOptions 类型参数的问题。
394- 修复了 LiveQuery 的 `Query#subscribe` 方法在 React Native 中返回 undefined 的问题。
395- 修复了包括 `Relation` 在内的一些 TypeScript 定义文件错误。
396
397<details>
398 <summary>
399Prereleases
400 </summary>
401
402## 3.11.0-beta.0 (2018-08-13)
403
404### Features
405
406- 增加了 `AV.LiveQuery.pause` 与 `AV.LiveQuery.resume` 方法。这两个方法可以用于在网络变化或者应用切换后台时主动通知 SDK 断开/恢复 LiveQuery 的连接。
407
408### Bug fixes
409
410- 修复了 `AV.File#save` 方法参数不尊重 AuthOptions 类型参数的问题。
411
412</details>
413
414# 3.10.0 (2018-08-03)
415
416### Features
417
418- `AV.Leaderboard#getResultsAroundUser` 方法增加了 `user` 参数支持获取指定用户附近的排名结果。
419
420### Bug fixes
421
422- 修复了文件上传进度回调会错误地在上传结束后报告 `direction` 为 `'download'` 的事件的问题。
423- 修复了 TypeScript 定义中与第三方登录相关的多处错误。
424
425# 3.9.0 (2018-07-19)
426
427### Features
428
429- 增加了匿名用户登录的支持:
430 - `AV.User.loginAnonymously` 方法用于创建一个匿名用户并登录。
431 - `AV.User#isAnonymous` 方法用于判断用户是否为匿名用户。
432- 排行榜增加了新的功能:
433 - 支持更新数据时,无视排行榜的更新策略,强制更新分数:`AV.Leaderboard#updateStatistics` 方法增加了 `overwrite` 参数。
434 - 支持获取历史版本的排名结果:`AV.Leaderboard#getResults` 与 `AV.Leaderboard#getResultsAroundUser` 方法增加了 `version` 参数。
435 - 增加了获取历史版本存档的方法 `AV.Leaderboard#getArchives`。
436
437## 3.8.1 (2018-07-13)
438
439### Bug fixes
440
441- 修复 TypeScript 定义中的多处问题。
442
443# 3.8.0 (2018-07-09)
444
445### Features
446
447- 初始化时不再需要 `region` 参数了。
448- 改进了 TypeScript 定义,现在 `AV.Query` 的查询结果会得到正确的类型推导。
449- 排行榜 API 根据产品功能的更新进行了一些调整:
450 - 增加了一个新的数据更新策略 `AV.LeaderboardUpdateStrategy.SUM`。
451 - 移除了不再可用的 `AV.LeaderboardVersionChangeInterval.HOUR`。
452- `AV.Conversation` 的发送消息 API 现在可以接受 leancloud-realtime v4 中的新 `Message` 类了。
453- 美国节点的应用现在也启用了每个应用独立的域名。
454
455## 3.7.3 (2018-06-14)
456
457### Bug fixes
458
459- 修复了 CocosCreator 中 `AV.Query#find` 等方法在模拟器及真机上不触发回调并打印 `[ERROR] args[0] isn't a typed array or an array buffer` 的问题。
460- 修复了通过 `require('leancloud-storage/live-query')` 引入 SDK 无法得到 TypeScript 定义的问题。
461
462## 3.7.2 (2018-06-06)
463
464### Bug fixes
465
466- 修复了 `AV.Query#find` 方法错误的 TypeScript 定义。
467- 排行榜 API 进行了修订。
468
469## 3.7.1 (2018-05-31)
470
471### Bug fixes
472
473- 增加了遗漏的 `AV.Leaderboard#destroy` 方法。
474- 修复了将一个通过 `AV.File.withURL` 方法创建的文件保存为一个对象的属性时,文件被错误地保存为 `null` 的问题。
475- 更新了排行榜使用的 Rest API 路径。
476
477# 3.7.0 (2018-05-25)
478
479### Features
480
481- 第三方账号登录功能增加了两项新的能力:
482
483 - 所有第三方账号登录 API 增加了 `failOnNotExist` 参数,指定该参数为 `true` 时如果当前不存在该 `authData` 对应的用户,将会抛出「未找到用户」异常。该选项使开发者在使用第三方账号登录创建新用户之前有机会要求用户填写手机号码等信息。
484
485 我们还重新命名了这些 API,以更好的反映其功能:
486
487 - `AV.User.loginWithAuthData` 代替了 `AV.User.signUpOrlogInWithAuthData`
488 - `AV.User.loginWithAuthDataAndUnionId` 代替了 `AV.User.signUpOrlogInWithAuthDataAndUnionId`
489 - `AV.User.loginWithWeapp` 没有变化
490
491 旧的 API 已不赞成使用,并将会在 v4.0.0 中移除。
492
493 - 所有第三方账号登录静态 API 增加了对应的实例方法。开发者可以在调用这些方法前,先设置好用户的 `username`,`password` 等信息,再与 `authData` 一起进行登录。增加的方法有:
494
495 - `AV.User#loginWithAuthData`
496 - `AV.User#loginWithAuthDataAndUnionId`
497 - `AV.User#loginWithWeapp`
498
499- 新功能预览:排行榜(`AV.Leaderboard`)
500
501 排行榜功能目前在预览阶段,在正式发布前 API 可能会有不向前兼容的变更,请不要在生产环境使用。
502
503 - [使用文档](https://url.leanapp.cn/leaderboard-js)
504 - [API 文档](https://leancloud.github.io/javascript-sdk/docs/AV.Leaderboard.html)
505 - [Demo](https://leancloud.github.io/javascript-sdk/demo/leaderboard/)
506
507### Bug fixes
508
509- 修复了 `AV.Query#sizeEqualTo` 方法没有返回 `this` 的问题。
510
511## 3.6.8 (2018-04-25)
512
513### Bug fixes
514
515- 修复了 `AV.User#associateWithAuthDataAndUnionId` 方法在当前用户已经连接了其他第三方平台时,unionId 没有生效的问题。
516- 修复了一些 TypeScript 定义文件的问题。
517
518## 3.6.7 (2018-04-20)
519
520### Bug fixes
521
522- 修复了如果对象有 File 类型的属性,保存时会堆栈溢出的问题。这个问题是 v3.6.5 中引入的。
523
524## 3.6.6 (2018-04-18)
525
526### Bug fixes
527
528- 修复了使用 LiveQuery 时在某些情况下会异常断开连接的问题。
529- 修复了使用 `AV.Status` 的 `countUnreadStatuses` 与 `resetUnreadCount` 方法时指定 `owner` 参数不生效(始终作用于当前用户)的问题。
530- 修复了使用 `fetchWhenSave` 选项更新对象时,如果更新的属性使用了嵌套的 key(如 `book.name`),更新成功后对象会有一些异常的未保存的值的问题。这个问题是 v3.6.5 中引入的。
531
532## 3.6.5 (2018-04-09)
533
534### Bug fixes
535
536- 修复了对 Object 或 Array 类型的字段的值进行的直接修改在 save 时没有被正确保存的问题。这个问题是 v3.3.0 中引入的。
537
538## 3.6.4 (2018-03-30)
539
540### Bug fixes
541
542- 修复了通过 `AV.User.current()` 获得的 User 有时无法正确得到关联对象属性的问题。
543
544## 3.6.3 (2018-03-23)
545
546### Bug fixes
547
548- 修复了 LiveQuery 在断线重连后收不到新的通知的问题。
549
550## 3.6.1 (2018-03-19)
551
552### Bug fixes
553
554- 修复了在 wepy 中使用时,在编译时抛出 `找不到模块: vertx` 异常的问题。
555- 修复了 `AV.Object` 中已经被 unset 的字段,fetch 后没有被清理的问题。
556
557# 3.6.0 (2018-02-05)
558
559### Features
560
561- 第三方登录支持使用微信 unionId + openId 登录。
562- 支持全局设置请求超时时间: `AV.setRequestTimeout(ms);`,超时后 SDK 会抛出 `ECONNABORTED` 异常。
563
564### Bug Fixes
565
566- 修复了一个微信小游戏环境中的异常。
567
568# 3.5.0 (2018-01-10)
569
570### Features
571
572- 支持微信小游戏。
573
574### Bug Fixes
575
576- 修复了初始化时传入 `serverURLs` 参数为 string 类型不生效的问题。
577
578## 3.4.2 (2017-11-28)
579
580### Features
581
582- 细化了请求日志级别。
583
584### Bug fixes
585
586- 修复了 `AV.User#dissociateAuthData` 方法抛异常的问题。
587- 修复了使用 `object#set('a.b', value)` 修改嵌套的属性后,本地再次获取属性值没有更新的问题。
588
589## 3.4.1 (2017-11-17)
590
591### Bug fixes
592
593- 修复了华北节点在 Node.js 中上传大文件可能会抛出 `invalid multipart format: multipart: message too large` 异常的问题。
594- 修复了小程序中请求返回值被错误地解析为 null 导致的问题。
595
596# 3.4.0 (2017-11-13)
597
598### Features
599
600- 小程序中支持通过 `onprogress` 回调参数拿到文件上传进度。
601- 在 v3.1.1 中,我们在异常的信息 `error.message` 中附加了一些请求相关的信息。这可能会导致一些依赖对错误信息进行字符串匹配的逻辑出错。我们为这个问题提供了两种解决方案:
602 1. 使用新增的 `error.rawMessage` 代替 `error.message`。此外我们推荐依赖 `error.code` 进行判断,而非对错误信息进行字符串匹配。
603 2. 全局设置 `AV.keepErrorRawMessage(true)` 恢复 v3.1.1 之前的行为。
604
605### Bug Fixes
606
607- 修复了在 Node.js 中通过 Stream 构造 `AV.File` 可能会抛 `Cannot read property 'match' of undefined` 异常的问题。
608
609## 3.3.1 (2017-10-25)
610
611### Bug fixes
612
613- 在 3.3.0 中,为了得到批量删除时每个对象的结果,我们修改了 `AV.Object.destroyAll` 的内部实现。这个改动会导致计费时按照删除的个数计算请求数而不是之前的只计算一次。在这个补丁中我们恢复了之前的逻辑。
614
615# 3.3.0 (2017-10-24)
616
617### Features
618
619- `AV.Object.saveAll` 与 `AV.Object.fetchAll` 失败时,抛出的异常 error 对象增加 `results` 属性,类型为 `Array<AV.Object|Error>`。通过这个属性,开发者可以知道哪些对象的操作成功了,哪些失败了。
620- `AV.User` 增加了 `#associateWithAuthData` 与 `#dissociateAuthData` 用于关联、解绑第三方平台。原有的静态方法 `AV.User.associateWithAuthData` 已废弃。
621
622### Bug Fixes
623
624- 优化了关联对象保存时的逻辑,减少了一些不必要的保存请求,避免了在关联对象有循环依赖时可能会出现死循环的问题。
625- 修复了使用应用内社交模块 `inboxQuery` 查询时可能出现 `URI too long` 异常的问题。
626
627## 3.2.1 (2017-09-19)
628
629### Bug fixes
630
631- 更换了被屏蔽的文件上传域名。小程序用户请前往 [《小程序域名白名单配置》](https://leancloud.cn/docs/weapp-domains.html) 更新域名白名单。
632
633# 3.2.0 (2017-09-11)
634
635### Features
636
637- `AV.Object` 增加了 `#bitAnd`、`#bitOr` 与 `#bitXor` 方法,支持对 `Number` 类型的字段进行位操作。
638- `AV.File` 增加了 `#setUploadHeader` 方法,支持为上传请求自定义 headers。
639
640## 3.1.1 (2017-08-23)
641
642### Bug fixes
643
644- 修复了 SDK 在 iOS9 中抛 `Attempting to change value of a readonly property` 异常的问题。
645- 修复了在某些 ACL 设置下,`AV.User.become` 方法会被拒绝的问题。
646- 修复了使用 `new AV.User(data, { parse: true })` 方式构造的 User 没有数据的问题。
647
648# 3.1.0 (2017-08-09)
649
650### Bug Fixes
651
652- 修复了在某些运行环境中使用 LiveQuery 或 Captcha 功能时可能会出现 `Object.assign` 不存在的问题。
653
654### Features
655
656- `AV.Object` 增加了静态属性 `query`,该属性是一个 getter,每次访问该属性会返回一个当前类的 Query。
657
658 <details>
659
660 ```javascript
661 class Post extends AV.Object {}
662 // 等价于 const query = new AV.Query(Post);
663 const query = Post.query;
664 ```
665
666## 3.0.4 (2017-08-01)
667
668### Bug fixes
669
670- 修复了 leanengine 中没有正确禁用 currentUser 的问题。
671
672## 3.0.3 (2017-07-28)
673
674### Bug fixes
675
676- 修复了 `AV.File` 在浏览器中不支持通过 Blob 创建的问题。
677- 修复了一些 TypeScript 定义文件的问题。
678
679## 3.0.2 (2017-07-10)
680
681### Bug fixes
682
683- 修复了 IE 下抛出 Promise 未定义异常的问题。
684- 修复了微信小程序一键登录时没有正确初始失败情况的问题。
685
686## 3.0.1 (2017-06-21)
687
688### Bug fixes
689
690- 修复了美国节点文件上传失败的问题。
691- 修复了 React Native 中用户登录成功会导致 crash 的问题。
692
693# 3.0.0 (2017-06-16)
694
695### Highlights
696
697- **LiveQuery**:通过订阅一个 `Query`,在其结果发生变动时实时得到通知。详见 [《LiveQuery 开发指南》](https://url.leanapp.cn/livequery)。
698- **新的序列化反序列化方法**:针对 `AV.Object` 重新设计了 `#toJSON` 方法,并提供了一对可靠的序列化反序列化方法。
699- **`AV.request` 方法**:公开了低抽象级别的 `AV.request` 方法,方便开发者直接调用 LeanCloud Rest API。
700
701### Breaking Changes
702
703- 重新设计了 `AV.Object` 序列化相关的方法:
704
705 - 如果需要将 `AV.Object` 中的有效信息转换成 JSON Object,请使用 `AV.Object#toJSON` 方法。请注意通过此方法得到的 JSON 不包含对象的元信息,因此是不可逆的(无法转换回 `AV.Object`)。
706 - 如果需要「存储」或「传输」`AV.Object`,请使用新增的 `AV.Object#toFullJSON`(序列化)与 `AV.parseJSON`(反序列化)方法。
707
708 新版中的 `AV.Object#toJSON` 相比于 v2 有以下区别:
709
710 - 如果对象某个字段类型是 Pointer,并且有内容(included),新版中会递归地输出这个字段的有效信息(旧版中会输出一个 Pointer 结构)
711
712 <details>
713
714 ```javascript
715 new AV.Query('Child').include('father').first()
716 .then(child => child.toJSON().father)
717 .then(console.log);
718 /*
719 v3: {
720 objectId: "58a461118d6d8100580a0c54",
721 name: "John Doe",
722 createdAt: "2017-02-15T14:08:39.892Z",
723 updatedAt: "2017-02-16T10:49:00.176Z"
724 }
725 v2: {
726 objectId: "58a461118d6d8100580a0c54",
727 __type: "Pointer",
728 className: "Parent",
729 }
730 ```
731
732 - 如果字段的类型是 `Date`,新版中会输出该时间的 UTC 格式字符串(旧版中会输出一个 Date 结构)
733
734 <details>
735
736 ```javascript
737 const child = new Child().set('birthday', new Date());
738 console.log(child.toJSON().birthday);
739 /*
740 v3: "2011-11-11T03:11:11.000Z"
741 v2: {
742 __type: "Date",
743 iso: "2011-11-11T03:11:11.000Z"
744 }
745 ```
746
747 更多背景与技术细节请参考 [#453](https://github.com/leancloud/javascript-sdk/pull/453#issue-208346693).
748
749- 为了更好的隔离服务,我们为每个应用提供了独立的域名。对于小程序用户,请前往 [《小程序域名白名单配置》](https://leancloud.cn/docs/weapp-domains.html) 更新域名白名单。
750- 创建 `Role` 时 `acl` 参数不再是可选的。在 v2 中,如果不指定,SDK 会自动为其设置一个 public read-only 的默认 acl,在新版中必须显式的指定。
751
752 <details>
753
754 ```javascript
755 // 之前的用法
756 new AV.Role('admin');
757
758 // 新版中等价于
759 var acl = new AV.ACL();
760 acl.setPublicReadAccess(true);
761 new AC.Role('admin', acl);
762 ```
763
764### Features
765
766- LiveQuery 功能允许开发者订阅一个 `Query`,在 `Query` 的结果发生变动时实时得到通知。
767 - 增加了 `Query#subscribe` 方法,返回该 `Query` 对应的 `LiveQuery` 实例;
768 - 增加了 `LiveQuery` 类,在 `Query` 结果变化时 SDK 会在 `LiveQuery` 实例上派发 `create`、`update`、`enter`、`leave`、`delete` 等事件。
769- 开放了低抽象级别的 `AV.request` 方法,方便开发者直接调用 LeanCloud Rest API。
770- 增加了 `AV.setServerURLs` 方法,允许单独配置云函数等服务的域名以进行本地调试。
771
772 <details>
773
774 ```javascript
775 AV.setServerURLs({
776 engine: 'http://localhost:3000',
777 });
778 ```
779
780- 支持在 Node.js 中通过 Stream 构建 `AV.File`(仅支持中国节点)。
781
782 <details>
783
784 ```javascript
785 const fs = require('fs');
786 const readStream = fs.createReadStream('sample.txt');
787 const file = new AV.File('filename', readStream);
788 ```
789
790### Bug Fixes
791
792- 修复了在中国节点 Node.js 中上传文件会阻塞当前线程的问题。
793
794测试版本的更新日志:
795
796<details>
797
798## 3.0.0 (2017-06-16)
799
800### Bug Fixes
801
802- 修复了上传文件 size 信息缺失的问题。
803- 修复了在中国节点 Node.js 中上传文件会阻塞当前线程的问题。
804
805### Features
806
807- 支持 LiveQuery。
808- 支持在 Node.js 中通过 Stream 构建 `AV.File`(仅支持中国节点)。
809
810 <details>
811
812 ```javascript
813 const fs = require('fs');
814 const readStream = fs.createReadStream('sample.txt');
815 const file = new AV.File('filename', readStream);
816 ```
817
818### Miscellanies
819
820- 包含了 v2.5.0 的新特性。
821
822## 3.0.0-beta.3 (2017-06-01)
823
824### Features
825
826- LiveQuery
827
828### Miscellanies
829
830- 包含了 v2.3.0-v2.4.0 的新特性与修复。
831
832# 3.0.0-beta.2 (2017-04-27)
833
834### Breaking Changes
835
836- 为了更好的隔离服务,我们为每个应用提供了独立的域名。对于小程序用户,请前往 [《小程序域名白名单配置》](https://leancloud.cn/docs/weapp-domains.html) 更新域名白名单。
837- 创建 `Role` 时 `acl` 参数不再是可选的。在 v2 中,如果不指定,SDK 会自动为其设置一个 public read-only 的默认 acl,在新版中必须显式的指定。
838
839 <details>
840
841 ```javascript
842 // 之前的用法
843 new AV.Role('admin');
844
845 // 新版中等价于
846 var acl = new AV.ACL();
847 acl.setPublicReadAccess(true);
848 new AC.Role('admin', acl);
849 ```
850
851### Features
852
853- 开放了低抽象级别的 `AV.request` 方法,方便开发者直接调用 SDK 还不支持的 Rest API。
854- 增加了 `AV.setServerURLs` 方法,允许单独配置云函数等服务的域名。
855
856 <details>
857
858 ```javascript
859 AV.setServerURLs({
860 engine: 'http://localhost:3000',
861 });
862 ```
863
864### Miscellanies
865
866- 包含了 v2.1.3-v2.2.1 的新特性与修复。
867
868## 3.0.0-beta.1 (2017-02-28)
869
870### Bug Fixes
871
872- 修复了 Query 时使用 Date 类型的条件会导致查询结果异常的问题
873
874# 3.0.0-beta.0 (2017-02-22)
875
876### Breaking Changes
877
878重新设计了 `AV.Object` 序列化相关的方法:
879
880- 如果需要将 `AV.Object` 中的有效信息转换成 JSON Object,请使用 `AV.Object#toJSON` 方法。请注意通过此方法得到的 JSON 不包含对象的元信息,因此是不可逆的(无法转换回 `AV.Object`)。
881- 如果需要「存储」或「传输」`AV.Object`,请使用新增的 `AV.Object#toFullJSON`(序列化)与 `AV.parseJSON`(反序列化)方法。
882
883新版中的 `AV.Object#toJSON` 相比于 v2 有以下区别:
884
885- 如果对象某个字段类型是 Pointer,并且有内容(included),新版中会递归地输出这个字段的有效信息(旧版中会输出一个 Pointer 结构)
886
887 <details>
888
889 ```javascript
890 new AV.Query('Child').include('father').first()
891 .then(child => child.toJSON().father)
892 .then(console.log);
893 /*
894 v3: {
895 objectId: "58a461118d6d8100580a0c54",
896 name: "John Doe",
897 createdAt: "2017-02-15T14:08:39.892Z",
898 updatedAt: "2017-02-16T10:49:00.176Z"
899 }
900 v2: {
901 objectId: "58a461118d6d8100580a0c54",
902 __type: "Pointer",
903 className: "Parent",
904 }
905 ```
906
907- 如果字段的类型是 `Date`,新版中会输出该时间的 UTC 格式字符串(旧版中会输出一个 Date 结构)
908
909 <details>
910
911 ```javascript
912 const child = new Child().set('birthday', new Date());
913 console.log(child.toJSON().birthday);
914 /*
915 v3: "2011-11-11T03:11:11.000Z"
916 v2: {
917 __type: "Date",
918 iso: "2011-11-11T03:11:11.000Z"
919 }
920 ```
921
922更多背景与技术细节请参考 [#453](https://github.com/leancloud/javascript-sdk/pull/453#issue-208346693).
923
924</details>
925
926# 2.5.0 (2017-06-01)
927
928### Bug Fixes
929
930- 修复了查询 `Role` 时错误的打印了 deprecation 警告的问题
931
932### Features
933
934- `User#follow` 增加了一种重载,现在可以通过 `options.attributes` 参数为创建的 `Follower` 与 `Followee` 增加自定义属性,方便之后通过 `User#followerQuery` 与 `User#followerQuery` 进行查询。
935
936# 2.4.0 (2017-05-19)
937
938### Bug Fixes
939
940- **可能导致不兼容** 修复了 `Query#get` 方法在目标对象不存在的情况下会返回一个没有数据的 `AV.Object` 实例的问题,现在该方法会正确地抛出 `Object not found` 异常。这个问题是在 2.0.0 版本中引入的。
941
942### Features
943
944- 增加了 `Conversation#broadcast` 方法用于广播系统消息
945
946## 2.3.2 (2017-05-12)
947
948### Bug Fixes
949
950- 修复了获取图形验证码会导致栈溢出的问题。
951
952# 2.3.0 (2017-05-11)
953
954### Features
955
956- 增加了 `AV.Conversation` 类。现在可以直接使用 SDK 来创建、管理会话,发送消息。
957- 改进了验证码 API。增加了 `AV.Captcha`,可以通过 `AV.Captcha.request` 方法获取一个 Captcha 实例。特别的,在浏览器中,可以直接使用 `Captcha#bind` 方法将 Captcha 与 DOM 元素进行绑定。
958
959## 2.2.1 (2017-04-26)
960
961### Bug Fixes
962
963- 修复了 `User.requestLoginSmsCode`,`User.requestMobilePhoneVerify` 与 `User.requestPasswordResetBySmsCode` 方法 `authOptions.validateToken` 参数的拼写错误。
964
965# 2.2.0 (2017-04-25)
966
967### Bug Fixes
968
969- 修复了 Safari 隐身模式下用户无法登录的问题
970
971### Features
972
973- 短信支持图形验证码(需要在控制台应用选项「启用短信图形验证码」)
974 - 新增 `Cloud.requestCaptcha` 与 `Cloud.verifyCaptcha` 方法请求、校验图形验证码。
975 - `Cloud.requestSmsCode`,`User.requestLoginSmsCode`,`User.requestMobilePhoneVerify` 与 `User.requestPasswordResetBySmsCode` 方法增加了 `authOptions.validateToken` 参数。没有提供有效的 validateToken 的请求会被拒绝。
976- 支持客户端查询 ACL(需要在控制台应用选项启用「查询时返回值包括 ACL」)
977 - 增加 `Query#includeACL` 方法。
978 - `Object#fetch` 与 `File#fetch` 方法增加了 `fetchOptions.includeACL` 参数。
979
980## 2.1.4 (2017-03-27)
981
982### Bug Fixes
983
984- 如果在创建 `Role` 时不指定 `acl` 参数,SDK 会自动为其设置一个「默认 acl」,这导致了通过 Query 得到或使用 `Object.createWithoutData` 方法得到 `Role` 也会被意外的设置 acl。这个版本修复了这个问题。
985- 修复了在 React Native for Android 中使用 blob 方式上传文件失败的问题
986
987## 2.1.3 (2017-03-13)
988
989### Bug Fixes
990
991- 修复了调用 `User#refreshSessionToken` 刷新用户的 sessionToken 后本地存储中的用户没有更新的问题
992- 修复了初始化可能会造成 disableCurrentUser 配置失效的问题
993- 修复了 `Query#destroyAll` 方法 `options` 参数无效的问题
994
995## 2.1.2 (2017-02-17)
996
997### Bug Fixes
998
999- 修复了文件上传时,如果 `fileName` 没有指定扩展名会导致上传文件 `mime-type` 不符合预期的问题
1000- 修复了清空 ACL 部分对象的权限后没有正常删除对象的问题(by [AntSworD](https://github.com/AntSworD))
1001
1002## 2.1.1 (2017-02-07)
1003
1004### Bug Fixes
1005
1006- 修复了使用 masterKey 获取一个 object 后再次 save 可能会报 ACL 格式不正确的问题。
1007
1008# 2.1.0 (2017-01-20)
1009
1010### Bug Fixes
1011
1012- 修复了 `File#toJSON` 序列化结果中缺失 objectId 等字段的问题
1013- 修复了使用 `Query#containsAll`、`Query#containedIn` 或 `Query#notContainedIn` 方法传入大数组时查询结果可能为空的问题
1014- 修复了文件上传失败后 \_File 表中仍有可能残留无效文件记录的问题
1015
1016### Features
1017
1018- 增加了 `User#refreshSessionToken` 方法用于刷新用户的 sessionToken
1019- 增加了 `Query#scan` 方法用于遍历 Class
1020- 应用内社交模块增加了 `Status.resetUnreadCount` 方法用于重置未读消息数
1021
1022## 2.0.1 (2017-01-12)
1023
1024### Bug Fixes
1025
1026- 修复了在 Node.js 中向国内节点上传文件抛异常的问题
1027- 修复了小程序中不启用「ES6 转 ES5」选项时加载 SDK 抛异常的问题
1028
1029# 2.0.0 (2017-01-09)
1030
1031### Highlights
1032
1033- **全面支持微信小程序**:包括文件存储在内的所有功能均已支持微信小程序,用户系统还增加了小程序内一键登录的 API。详见 [在微信小程序中使用 LeanCloud](https://leancloud.cn/docs/weapp.html)。
1034- **Promise first**:Promise 风格的异步 API 已被社区广泛接受,此前回调参数优先于其他参数的设计已过时,因此我们去掉了对 Backbone 回调风格参数的支持。
1035- **支持对单次操作指定是否使用 masterKey**:此前使用 masterKey 是全局生效的,会导致无法充分利用 ACL 等内建的权限控制机制。此项改进将其生效范围细化到了单次操作。
1036- **移除 Node.js 0.12 支持**:Node.js 0.12 LTS 已停止维护,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。
1037
1038### Breaking Changes
1039
1040- 移除了 Node.js 0.12 的支持,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。
1041- 移除了所有 Backbone 回调风格的参数,请使用 Promise 处理异步操作的结果与异常:
1042
1043 <details>
1044
1045 ```javascript
1046 // Backbone callback 回调风格的参数的用法
1047 object.save(null, {
1048 success: function(object) {},
1049 error: function(error, object) {},
1050 });
1051
1052 // 需要替换为
1053 object.save().then(function(object) {}, function(error) {});
1054 ```
1055
1056- `AV.Promise` 现在是一个满足 Promises/A+ 标准的实现,所有非标准的方法已被移除,所有非标准的行为已被修正。关于标准 Promise 的更多信息推荐阅读 [《JavaScript Promise 迷你书》](http://liubin.org/promises-book/)
1057- `AV.Query` 中的大部分 API 启用了更加严格的参数检查。特别的,对于以下 API,当指定 value 的值为 `undefined` 时会抛出异常(之前会直接忽略这个条件或限制)
1058
1059 - 参数形如 `(key, value)` 类型的条件限制 API,如 `AV.Query#equalTo(key, value)`
1060 - `AV.Query#limit(value)`
1061 - `AV.Query#select(value)`
1062
1063- `AV.Query#get` 方法现在尊重 Class 的 get 权限设置(之前检查的是 find 权限)
1064
1065- `objectId`、`createdAt`、`updatedAt` 现在是只读字段,尝试 set 这些字段时 SDK 会抛出异常
1066- `object.get('id')` 与 `object.set('id', '')` 现在将会正确的读、写数据表中的 `id` 字段(之前映射的是 `objectId`)。你现在依然可以使用 `object.id` 来访问数据的 `objectId`。
1067
1068- 如果你 extend 的 `AV.Object` 子类重写了 `validate` 方法,当属性无效时现在需要 throw 一个 Error(之前是 return 一个 Error)。相应的,`AV.Object#set` 方法如果 set 的值无效,需要通过 try catch 捕获异常(之前通过检查返回值是 false)
1069
1070 <details>
1071
1072 ```javascript
1073 // 之前的用法
1074 var Student = AV.Object.extend('Student', {
1075 validate: function(attibutes) {
1076 if (attributes.age < 0) return new Error('negative age set');
1077 },
1078 });
1079 var tom = new Student();
1080 if (tom.set('age', -1) === false) {
1081 console.error('something wrong');
1082 } else {
1083 tom.save();
1084 }
1085
1086 // 现在的用法
1087 var Student = AV.Object.extend('Student', {
1088 validate: function(attibutes) {
1089 if (attributes.age < 0) throw new Error('negative age set');
1090 },
1091 });
1092 var tom = new Student();
1093 try {
1094 tom.set('age', -1);
1095 } catch (error) {
1096 console.error(error.message);
1097 }
1098 tom.save();
1099 ```
1100
1101- 上传文件时不再额外地向文件的 metaData 中写入 mime_type,之前通过 metaData 获取 mime_type 的用法需要更新:
1102
1103 <details>
1104
1105 ```javascript
1106 // 之前的用法
1107 file.metaData('mime_type');
1108
1109 // 现在的用法
1110 file.get('mime_type');
1111 ```
1112
1113- 移除了 deprecated 的 API,包括:
1114 - `AV.Object#existed`
1115 - `AV.User.requestEmailVerfiy` (typo)
1116 - `AV.useAVCloudCN`
1117 - `AV.useAVCloudUS`
1118 - `AV._ajax`
1119 - `AV._request`
1120
1121### Features
1122
1123- 支持微信小程序
1124- 增加了 `AV.User.loginWithWeapp()` 与 `AV.User#linkWithWeapp()` ,支持在微信小程序中登录
1125- 增加了 `AV.User#isAuthenticated()`,该方法会校验 sessionToken 的有效性, 废弃 `AV.User#authenticated()`
1126- 绝大部分会发起网络请求的 API(如保存一个对象)支持通过 `option.useMasterKey` 参数指定该次操作是否要使用 masterKey,设置了该选项的操作会忽略全局的 useMasterKey 设置
1127- 去掉了 `Object.destroyAll` 方法要求所有删除的对象属于同一个 Class 的限制
1128- `Object.register()` 方法增加了第二个参数允许指定所注册的 Class 的名字,详情参见 [Object.register - API 文档](https://leancloud.github.io/javascript-sdk/docs/AV.Object.html#.register)。
1129- 上传文件的 mime_type 现在由服务端进行判断从而支持更多的文件类型
1130- 增加了 sourcemaps
1131
1132### Bug Fixes
1133
1134- 修复了在进行以下操作时可能出现 `URI too long` 异常的问题
1135 - 使用 `Query#containsAll`、`Query#containedIn` 或 `Query#notContainedIn` 方法时传入了一个大数组
1136 - 使用 `Object.destroyAll` 方法批量删除大量对象
1137- 修复了 `Object.set(key, value)` 方法可能会改变(mutate)`value` 的问题
1138- 修复了查询结果中 File 没有被正确解析的问题
1139- 修复了在 React Native 中使用 `AV.setProduction` 方法会导致后续操作引起 crash 的问题
1140- 修复了在 React Native 上传大文件可能出现 `invalid multipart format: multipart: message too large` 异常的问题
1141- 修复了 `AV.Insight.startJob` 方法中 saveAs 参数未生效的问题
1142- 修复了抛出 code == -1 的异常时 error.message 可能缺失的问题
1143- 修复了应用内社交模块的方法在未登录状态下传入了 sessionToken 仍然抛未登录异常的问题
1144
1145测试版本的更新日志:
1146
1147<details>
1148
1149## 2.0.0 (2017-01-09)
1150
1151### Bug Fixes
1152
1153- 修复了在 React Native 及小程序中上传大文件可能出现 `invalid multipart format: multipart: message too large` 异常的问题
1154- 修复了某些情况下上传的文件 mime_type 不正确的问题
1155
1156# 2.0.0-rc.0 (2016-12-30)
1157
1158### Breaking Changes
1159
1160- 移除了 Node.js 0.12 的支持,请考虑 [升级 Node.js 版本](https://www.joyent.com/blog/upgrading-nodejs)。
1161- 上传文件时不再额外地向文件的 metaData 中写入 mime_type,之前通过 metaData 获取 mime_type 的用法需要更新:
1162
1163 <details>
1164
1165 ```javascript
1166 // 之前的用法
1167 file.metaData('mime_type');
1168
1169 // 现在的用法
1170 file.get('mime_type');
1171 ```
1172
1173- (internal) `AV._decode(key, value)` 现在变更为 `AV._decode(value[, key])`
1174
1175### Features
1176
1177- 上传文件的 mime_type 现在由服务端进行判断从而支持更多的文件类型
1178- 去掉了 `Object.destroyAll` 方法要求所有删除的对象属于同一个 Class 的限制
1179- `Object.register()` 方法增加了第二个参数允许指定所注册的 Class 的名字,详情参见 [Object.register - API 文档](https://leancloud.github.io/javascript-sdk/docs/AV.Object.html#.register)。
1180
1181### Bug Fixes
1182
1183- 修复了在进行以下操作时可能出现 `URI too long` 异常的问题
1184 - 使用 `Query#containsAll`、`Query#containedIn` 或 `Query#notContainedIn` 方法时传入了一个大数组
1185 - 使用 `Object.destroyAll` 方法批量删除大量对象
1186- 修复了在 React Native 及小程序中使用 `AV.setProduction` 方法会导致后续操作引起 crash 的问题
1187- 修复了 `Object.set(key, value)` 方法可能会改变(mutate)`value` 的问题
1188- 修复了查询结果中 File 没有被正确解析的问题
1189- 修复了 `AV.Insight.startJob` 方法中 saveAs 参数未生效的问题
1190- 修复了抛出 code == -1 的异常时 error.message 可能缺失的问题
1191
1192## 2.0.0-beta.6 (2016-11-30)
1193
1194### Bug Fixes
1195
1196- 修复了 Android 微信小程序上初始化失败的问题
1197- 修复了小程序中使用应用内社交抛 `AV is not defined` 异常的问题
1198
1199### Features
1200
1201- 增加了 sourcemaps
1202
1203## 2.0.0-beta.5 (2016-11-16)
1204
1205### Bug Fixes
1206
1207- 修复了在 Android 微信小程序上运行时抛 `undefined is not a function` 异常的问题
1208
1209# 2.0.0-beta.4 (2016-11-11)
1210
1211### Breaking Changes
1212
1213- `objectId`、`createdAt`、`updatedAt` 现在是只读字段,尝试 set 这些字段时 SDK 会抛出异常
1214- `object.get('id')` 与 `object.set('id', '')` 现在将会正确的读、写数据表中的 `id` 字段(之前映射的是 `objectId`)。你现在依然可以使用 `object.id` 来访问数据的 `objectId`。
1215
1216### Features
1217
1218- 增加了 `AV.User.loginWithWeapp()` 与 `AV.User#linkWithWeapp()` ,支持在微信小程序中登录
1219- 增加了 `AV.User#isAuthenticated()`,该方法会校验 sessionToken 的有效性, 废弃 `AV.User#authenticated()`
1220
1221## 2.0.0-beta.3 (2016-11-8)
1222
1223### Bug Fixes
1224
1225- 修复了在微信小程序真机上运行时抛 `ReferenceError: Can't find variable: FormData` 异常的问题
1226- 修复了 2.0.0-beta.0 中引入的 `AV.Query#select`、`AV.Query#include` 不支持多个参数的问题
1227
1228## 2.0.0-beta.2 (2016-10-20)
1229
1230### Features
1231
1232- `AV.File` 支持微信小程序
1233
1234## 2.0.0-beta.1 (2016-10-13)
1235
1236### Features
1237
1238- 支持微信小程序 0.10.101100
1239
1240# 2.0.0-beta.0 (2016-9-29)
1241
1242### Breaking Changes
1243
1244- 移除了所有 Backbone 回调风格的参数,请使用 Promise 处理异步操作的结果与异常:
1245
1246 <details>
1247
1248 ```javascript
1249 // Backbone callback 回调风格的参数的用法
1250 object.save(null, {
1251 success: function(object) {},
1252 error: function(error, object) {},
1253 });
1254
1255 // 需要替换为
1256 object.save().then(function(object) {}, function(error) {});
1257 ```
1258
1259- `AV.Promise` 现在是一个满足 Promises/A+ 标准的实现,所有非标准的方法已被移除,所有非标准的行为已被修正。关于标准 Promise 的更多信息推荐阅读 [《JavaScript Promise 迷你书》](http://liubin.org/promises-book/)
1260
1261- 如果你 extend 的 `AV.Object` 子类重写了 `validate` 方法,当属性无效时现在需要 throw 一个 Error(之前是 return 一个 Error)。相应的,`AV.Object#set` 方法如果 set 的值无效,需要通过 try catch 捕获异常(之前通过检查返回值是 false)
1262
1263 <details>
1264
1265 ```javascript
1266 // 之前的用法
1267 var Student = AV.Object.extend('Student', {
1268 validate: function(attibutes) {
1269 if (attributes.age < 0) return new Error('negative age set');
1270 },
1271 });
1272 var tom = new Student();
1273 if (tom.set('age', -1) === false) {
1274 console.error('something wrong');
1275 } else {
1276 tom.save();
1277 }
1278
1279 // 现在的用法
1280 var Student = AV.Object.extend('Student', {
1281 validate: function(attibutes) {
1282 if (attributes.age < 0) throw new Error('negative age set');
1283 },
1284 });
1285 var tom = new Student();
1286 try {
1287 tom.set('age', -1);
1288 } catch (error) {
1289 console.error(error.message);
1290 }
1291 tom.save();
1292 ```
1293
1294- `AV.Query` 中的大部分 API 启用了更加严格的参数检查。特别的,对于以下 API,当指定 value 的值为 `undefined` 时会抛出异常(之前会直接忽略这个条件或限制)
1295
1296 - 参数形如 `(key, value)` 类型的条件限制 API,如 `AV.Query#equalTo(key, value)`
1297 - `AV.Query#limit(value)`
1298 - `AV.Query#select(value)`
1299
1300- `AV.Query#get` 方法现在尊重 Class 的 get 权限设置(之前检查的是 find 权限)
1301
1302- (intarnal) `AV.User#_linkWith` 的第二个参数中的 `options.authData` 字段提升为第二个参数
1303
1304 <details>
1305
1306 ```javascript
1307 // 之前的用法
1308 user._linkWith('weixin', {
1309 authData: {
1310 access_token: 'access_token',
1311 },
1312 });
1313
1314 // 现在的用法
1315 user._linkWith('weixin', {
1316 access_token: 'access_token',
1317 });
1318 ```
1319
1320- 移除了 deprecated 的 API,包括:
1321 - `AV.Object#existed`
1322 - `AV.User.requestEmailVerfiy` (typo)
1323 - `AV.useAVCloudCN`
1324 - `AV.useAVCloudUS`
1325 - `AV._ajax`
1326 - `AV._request`
1327
1328### Bug Fixes
1329
1330- 修复了应用内社交模块的方法在未登录状态下传入了 sessionToken 仍然抛未登录异常的问题
1331
1332### Features
1333
1334- 对象存储功能支持微信小程序
1335- 绝大部分会发起网络请求的 API(如保存一个对象)支持通过 `option.useMasterKey` 参数指定该次操作是否要使用 masterKey,设置了该选项的操作会忽略全局的 useMasterKey 设置
1336
1337</details>
1338
1339## 1.4.0 (2016-9-1)
1340
1341相比于 v1.4.0-beta.0:
1342
1343- 修复了 `AV.File#save` 方法的 `onprogress` 参数失效的问题
1344
1345# 1.4.0-beta.0 (2016-8-23)
1346
1347- 支持 ES2015 的 extends 语法来声明 `AV.Object` 的子类,增加了 `AV.Object.register` 方法用于注册声明的子类。
1348
1349 ```javascript
1350 class Article extends AV.Object {}
1351 AV.Object.register(Article);
1352 ```
1353
1354- `AV.Query` 支持查询 `AV.File`
1355- 修复多次调用 `AV.Object.extend('ClassName')` 后可能导致堆栈溢出的问题
1356- 修复 `AV.Query#addDescending` 没有返回 query 的问题,现在支持链式调用了
1357- 修复 React Native 0.32 中找不到 `react-native` 模块的问题
1358
1359## 1.3.3 (2016-8-2)
1360
1361- 修复在 `AV.Object` 子类某属性的 getter 中调用 `AV.Object#get` 方法时调用栈溢出的问题
1362
1363## 1.3.2 (2016-7-26)
1364
1365- 修复 1.3.1 中未彻底解决的 `A promise was resolved even though it had already been resolved` 异常问题
1366
1367## 1.3.1 (2016-7-21)
1368
1369- 修复多次调用 `AV.init` 抛出 `A promise was resolved even though it had already been resolved` 异常的问题
1370
1371# 1.3.0 (2016-7-20)
1372
1373- 增加 `AV.Object.fetchAll()` 方法
1374- 修复抛出的异常没有堆栈信息的问题
1375- 修复在某些异常情况下,发出的请求不带域名的问题
1376
1377## 1.2.1 (2016-6-30)
1378
1379- 修复美国节点文件上传成功后 File 实例没有 id 的问题
1380
1381# 1.2.0 (2016-6-29)
1382
1383- 增加 `AV.User.associateWithAuthData()` 方法
1384- 修复美国节点文件上传失败的问题
1385- 修复 `AV.User.signUpOrlogInWithAuthData()` 省略 callback 参数会报异常的问题
1386- 修复 React Native 中 import leancloud-storage 抛 `cannot read property "APIServerURL" for undefined` 异常的问题
1387
1388# 1.1.0 (2016-6-27)
1389
1390- 防止 SDK 覆盖全局变量 AV
1391- Object.add、Object.addUnique、Object.remove 等方法支持从传入非数组类型的 value 参数
1392- 修复路由缓存异常时,不再出现多次 410 错误请求
1393- 美国节点上传到 S3 改为直接上传,不再通过服务器中转
1394
1395# 1.0.0 (2016-5-30)
1396
1397- 弃用 AV.Error 对象,改为内部模块
1398- 移除 AV.applicationProduction 改为 AV.\_config.applicationProduction 内部接口
1399- 调整 npm 包名为 leancloud-storage
1400
1401# 1.0.0-rc9.2 (2016-5-23)
1402
1403- 修复了上传文件成功却进入失败回调的问题。
1404- 修复 `AV.Object#fetch` 在某些情况下抛出 `fetchOptions.include.join is not a function` 异常的问题。
1405
1406# 1.0.0-rc9.1 (2016-5-17)
1407
1408- 修复了上传文件到 COS 时报错的问题。
1409
1410# 1.0.0-rc9 (2016-5-16)
1411
1412- 修复了错误的 `package.browser` 字段引起的部分打包工具异常。
1413- 修复浏览器中 ajax 方法中错误的转码方式。
1414- 修复 `AV.Object#get` 方法返回部分字段类型异常。
1415- 修复 `AV.Object#fetch` 方法 `read sessionToken from undefined` 的错误。
1416- 支持节点动态路由。
1417- 文件上传使用 https 协议。
1418- 文件上传支持 React Native for Android。
1419
1420# 1.0.0-rc8 (2016-4-6)
1421
1422- **(BREAKING)** 添加了 AV.init 方法,该方法接收一个名为 options 的参数字典,废弃 AV.initialize 方法。
1423- **(BREAKING)** 为 AV.Object#save 方法的 options 参数添加了 fetchWhenSave 选项,废弃 AV.Object#fetchWhenSave 方法。
1424- **(BREAKING)** 添加了 disableCurrentUser 选项(可在 AV.init 方法中设置),当开启时:
1425 - AV.User.current 和 AV.User.currentAsync 打印警告并返回 null。
1426 - signUp, logIn, fetch, become 等方法不再写入全局状态。
1427 - 发起请求时不再向服务器发送 installationId。
1428 - AV.File 不再会自动设置 owner, 请在 data 参数中传入 owner 选项(AV.User 对象)。
1429- 为所有会发起网络请求的操作(save 等)的 options 参数添加了 sessionToken 选项,可通过传入该选项指定请求所使用的 sessionToken。
1430- 添加了 AV.User.getSessionToken 方法。
1431- 添加了 AV.User#logOut 这个实例方法(之前只有类方法)。
1432- 为 AV.Object#save 方法的 options 参数添加了 query 选项,该次更新操作在对象最新状态满足 query 时才会执行。
1433- 修正了在某些错误情况下返回值格式不正确的错误。
1434- 使用了更加安全的鉴权机制,以降低 App Key 在传输过程中泄露的风险。
1435- 移除了特殊跨域兼容实现,现在遵循 CORS。
1436
1437# 1.0.0-rc7 (2016-2-16)
1438
1439- 添加 AV.Cloud.rpc 方法
1440- 修复了 `AV.User#fetch` 不会运行回调函数的 bug。
1441
1442# 1.0.0-rc6 (2016-2-1)
1443
1444- 修复了云引擎中文件上传到 AWS 的问题。
1445- 修复了 `AV.User#fetch` 不支持 fetch options 的问题。
1446- 修复了使用 Pointer 时可能出现类型错误的问题。
1447
1448# 1.0.0-rc5 (2015-11-24)
1449
1450- AV.File 新增 fetch 方法。
1451- 废弃 AV.Object 的 existed 方法。
1452- 移除 AV.BigQuery 模块。该模块在 0.5.7 中废弃。
1453- 提升了在 node 中运行的性能。
1454- 修复了一些 IE 兼容性问题。
1455
1456# 1.0.0-rc4 (2015-11-12)
1457
1458- **(BREAKING)** 移除了 av-core[-mini].js,请直接使用 av[-mini].js。移除了 `Collection`、`Router` 等 Backbone 兼容模块,请直接使用 Backbone。
1459- 新增第三方平台帐号登录 API:`AV.User.signUpOrlogInWithAuthData()`。 感谢 @jacktator 。
1460- 修复海外节点文件上传方式错误的问题。
1461
1462# 1.0.0-rc3 (2015-10-27)
1463
1464- 修复 `AV._request` 某些情况下无法正常工作的 Bug。
1465- 修复某些登录 API 没有更新 currentUser 的问题
1466- 修复 localStorage 没有生效的 Bug,感谢热心用户反馈。
1467- AV.SearchQuery 增加 hasMore 和 reset 方法。
1468
1469## 0.6.4 (2015-10-27)
1470
1471- 修复 localStorage 没有生效的 Bug,感谢热心用户反馈。
1472- AV.SearchQuery 增加 hasMore 和 reset 方法。
1473
1474# 1.0.0-rc2 (215-10-22)
1475
1476- 兼容 React Native 运行环境。
1477- 修复 AV.Role 的兼容性问题。
1478- 修复 `AV._request` 某些情况下无法正常工作的 Bug。
1479
1480## 0.6.3 (2015-10-22)
1481
1482- 修复 AV.Role 的兼容性问题。
1483
1484# 1.0.0-rc1 (215-10-22)
1485
1486- 兼容 React Native 运行环境。
1487
1488## 0.6.2 (2015-10-22)
1489
1490- 修复 Follower/Followee 查询遇到 undefined 用户抛出异常的 bug。
1491- 修复在无痕模式浏览器下无法正常运行的 Bug。
1492- 修复 AV.File 保存可能导致堆栈溢出的 Bug。
1493- AV.Role 增加默认 ACL 设置。
1494
1495## 0.6.1 (2015-09-01)
1496
1497- 修复 AV.File 在 LeanEngine 中上传 Base64 图片数据损坏的 bug。
1498
1499# 0.6.0 (2015-08-25)
1500
1501- AV.File 在浏览器环境下直接上传文件到七牛,再无大小和频率限制。
1502- 新增 API AV.Cloud.getServerDate 用于获取当前服务器时间。
1503- 修改美国节点 API 域名为 us-api.leancloud.cn
1504- 使用 browserify 构建 SDK。
1505- 相同应用重复初始化 SDK 避免告警日志。
1506
1507## 0.5.8 (2015-08-5)
1508
1509- 修复 `AV.Object.destroyAll` 新版本无法工作的 Bug。
1510
1511## 0.5.7 (2015-07-29)
1512
1513- AV.Promise 仅在非 node 环境(如浏览器)默认启用 PromiseA+ 兼容模式
1514- 增加 AV.Promise.setDebugError 方法,用于在启用 PromiseA+ 模式的时候打印错误信息,方便调试
1515- 重命名 AV.BigQuery 模块为 AV.Insight,保留兼容 AV.BigQuery,推荐修改。
1516- 修复 fetchWhenSave 无法在创建对象的时候生效。
1517- 当重复初始化 SDK 的时候,打印警告日志。
1518- 修改默认 API 域名为 api.leancloud.cn。
1519
1520## 0.5.5 (2015-06-29)
1521
1522- AV.Promise 启用兼容 Promise+ 模式。
1523- 增加 AV.BigQuery 相关 API 用于发起离线分析和查询结果等。
1524- 修正 AV.Query 的 get 方法在遇到 undefined objectId 运行结果不符合预期的 Bug
1525- 修复 AV.File 无法作为数组保存的 Bug。
1526
1527## 0.5.4 (2015-05-14)
1528
1529- 紧急修复 localStorage 模块大小写名称错误。
1530
1531## 0.5.2 (2015-05-12)
1532
1533- 上传 sdk 到专门的 CDN 加速域名 [https://cdn1.lncld.net/static/](https://cdn1.lncld.net/static/)
1534- 兼容 ReactNative 运行环境
1535- 修复 AV.Query 的 addDescending 方法运行不符合预期的 Bug
1536- AV.Promise 在兼容 Primise+ 模式下优先使用 setImmediate
1537- AV.Object 的 fetch 方法新增重载方法,接收第一个参数是 fetchOptions ,设置 keys 或者 include 选项。
1538- AV.Query 支持 sizeEqualTo 方法,查询数组列大小等于特定长度的对象。
1539
1540## 0.5.1 (2015-03-27)
1541
1542- 实现应用内搜索 API,具体请参考[应用内搜索开发指南](https://leancloud.cn/docs/app_search_guide.html)。
1543- 增加 API : `AV.User.become(sessionToken, options)`。
1544
1545# 0.5.0 (2015-03-02)
1546
1547- 增强 `AV.Promise`,增加`done,catch,finally,AV.Promise.race` 等方法,兼容 Promise/A+
1548- 修复更新对象可能更新没有变更的属性的 Bug,减少请求流量。
1549
1550## 0.4.9 (2015-02-26)
1551
1552- 拆分 sdk,按照模块划分成多个文件。
1553- 使用 gulp 构建 sdk,清理代码。
1554- 修复事件流无法发送带有 `AV.File`、`AV.Object` 等类型的 Status。
1555- 修复 node.js 环境下上传文件没有扩展名的 Bug。
1556
1557## 0.4.7 (2015-01-23)
1558
1559- 修复页面跳转更新 user 导致 current user 属性丢失的 Bug。
1560- 增加 `AV.User.updatePassword` 方法,根据老密码修改成新密码。
1561- 为 `AV.Object` 增加 `getObjectId, getUpdatedAt, getCreatedAt` 三个方法。
1562- 增加 `AV.User#signUpOrlogInWithMobilePhone` 手机一键登录。
1563- 一些内部改进和重构。
1564
1565## 0.4.6 (2014-12-11)
1566
1567- 添加新方法 `AV.File.createWithoutData(objectId)`,根据 objectId 构造 AV.File
1568- 添加 `AV.Query.and` 方法用于复合查询
1569- `AV.File` 支持 get/set ACL
1570- 增加新方法 `AV.setProduction(boolean)` 用于设置生产环境或者测试环境。
1571
1572## 0.4.5 (2014-10-29)
1573
1574- CQL 查询支持占位符,AV.Query.doCloudQuery 方法增加三个参数版本
1575- AV.Push 增加 cql 属性说明,可以通过 CQL 指定推送查询条件。
1576- 部分内部代码重构。
1577
1578## 0.4.4 (2014-10-14)
1579
1580- 修复 node.js 下上传文件无法指定文件 mime type 的 Bug
1581- 添加 `AV.Object.new` 函数用来创建对象,避免代码压缩带来的问题。
1582
1583# 0.4.3
1584
1585- 添加 CQL 查询支持,增加 `AV.Query.doCloudQuery` 方法。
1586
1587# 老版本的 changelog
1588
1589https://download.avoscloud.com/sdk/javascript/changelog.txt
1590
\No newline at end of file