- 添加对新的 Hook(
onAuthData
)的支持,这个 Hook 会在云存储处理第三方登录的 authData 时触发,开发者可以在这个 Hook 中进行对 authData 的校验。 - 正式支持 JS SDK (leancloud-storage) 4.x,对于新的项目会自动安装 4.x 版本的 JS SDK(不影响既有项目)。
req.meta.remoteAddress
优先从Forwarded
头获取客户端 IP,在线上的 Hook 中可以获取到触发 Hook 的客户端 IP。AV.Cloud.HttpsRedirect
优先从Forwarded
头判断协议,非.leanapp.cn
域名的预备环境将被正确地重定向。- 添加新的实时通讯 Hook
AV.Cloud.onIMMessageUpdate
。
添加对新的即时通讯 Hook 的支持:
AV.Cloud.onIMConversationAdded
AV.Cloud.onIMConversationRemoved
AV.Cloud.onIMClientOnline
AV.Cloud.onIMClientOffline
AV.Cloud.onIMClientSign
兼容 JS SDK (leancloud-storage) 4.5.0 及以上版本的初始化机制。
- 添加对 Android Key 的支持。
Cloud.define
添加一个internal
选项。- 跟进云队列的新版本,添加
Cloud.getTaskInfo
。
- 修复 TypeScript 定义文件中的若干问题。
- 修复
AV.Cloud.start
- 添加
AV.Cloud.start
和AV.Cloud.stop
- 新增
AV.Cloud.enqueue
,任务队列支持。
- 修复
AV.Cloud.HttpsRedirect
在 koa 中会出现循环重定向的问题。
AV.Express()
添加onError
(全局云函数错误处理)和ignoreInvalidSessionToken
(忽略不正确的 Session Token 而不是返回错误)选项。- 修复改进 TypeScript 定义文件
- 修复发出请求的 User Agent
- 修复 Promise 写法的 beforeHook 无法正确工作的问题。
- 默认加载 JavaScript 中的 LiveQuery 特性。
- 修复 TypeScript 定义文件中的 AV.Object.
- 不兼容改动 指定 JavaScript SDK 为 peerDependency, 同时仅支持 leancloud-storage v3.0.0 以上版本。你需要运行
npm install leancloud-storage@3 --save
来额外安装 JS SDK,同时请检查 JS SDK 3.0 引入的其他不兼容改动。
新增 Koa2 支持(建议使用 Node 7.0 以上版本):
var app = new Koa();
app.use(AV.koa2());
app.use(AV.Cloud.HttpsRedirect({framework: 'koa2'}));
- 修复使用 remote 模式调用
Cloud.run
时,user 参数处理不正确的问题。
- 修复
Cloud.run
对 Promise 的支持。
- 补充 CORS 头,兼容最新版本的命令行工具的本地调试。
- 不兼容改动 升级 JavaScript SDK 到 leancloud-storage 2.1.0(请检查 JS SDK 2.0 引入的不兼容改动)。
- 不兼容改动 仅兼容至 Node.js 4.4 以上版本。
- 不兼容改动 重复定义云函数或 Hook 时会抛出一个异常。
- 不兼容改动 移除
AV.Cloud.httpRequest
(请改用request
模块)。 - 不兼容改动 移除
app.use(AV.Cloud)
的用法(请改用app.use(AV.express())
)。 - 不兼容改动 移除基于 domain 的异常处理,开发者需要自行捕捉云函数异步代码中的异常。
- 不兼容改动
AV.Cloud.run
不再支持 Backbone 风格的回调(success
和error
)、在运行失败时不再向标准输出打印日志,请从返回的 Promise 中获取错误。 - 不兼容改动
AV.Insight.on
注册的回调函数改为只接受一个result
参数(去掉了 err 参数,请从result.status
判断成功或失败)。 - 不兼容改动 一些错误提示被调整过,如果你依赖于对错误信息进行字符串匹配,请注意测试你的错误处理逻辑。
- 新增 TypeScript 类型定义文件,位于
leanengine.d.ts
。 - 新增
AV.Cloud.onIMMessageReceived
系列方法,用于更方便地定义实时通讯 Hook 函数。
新增云函数、Class Hook 和 User Hook 的 Promise 模式,会使用 Promise 的值作为响应内容。如果在 Promise 中抛了使用新增的 AV.Cloud.Error
构造的异常则作为错误返回给客户端,AV.Cloud.Error
的第二个参数可以指定 HTTP Status Code 和 Error Code(AV.Cloud.Error('posts is empty', {status: 422, code: 422})
);如果抛出了其他错误类型则视作服务器端错误,返回 500 响应并打印错误到标准输出。
AV.Cloud.define(function(request) {
return new AV.Query('Post').find().then( posts => {
if (posts.length > 0) {
return posts[0];
} else {
throw new AV.Cloud.Error('posts is empty');
}
});
});
对于原本不需要响应的 after 类 Hook(还包括 onVerified),现在也会按照同样的方式等待 Promise 完成再发送响应、结束链接,如果你希望收到请求后立刻结束链接,请不要在这类 Hook 中返回 Promise(或提前返回一个已经 resolve 的 Promise)。
如果传入 AV.Cloud.define
的函数有两个参数(request
和 response
)则继续兼容原定义方式,需要使用 response.success()
发送响应。我们会继续兼容这种用法到下一个大版本,希望开发者尽快迁移到 Promise 风格的云函数上。
新增了 LeanCloudHeaders 中间件,用于在 Express 或 Koa 应用中解析 X-LC
开头的头,获取 Session Token 等信息:
// 注册中间件
app.use(AV.Cloud.LeanCloudHeaders());
// 获取 Session Token
app.get('/', (req, res) => {
res.json({
sessionToken: req.AV.sessionToken
})
});
暂时地锁定 leancloud-storage 的版本,控制 1.5.5 中 disableCurrentUser 变动的影响。
- 锁定 leancloud-storage 的版本到 1.5.4
- 升级 JavaScript SDK 到 leancloud-storage 1.5.0
- 升级 JavaScript SDK 到 leancloud-storage 1.4.0
- 升级 JavaScript SDK 到 leancloud-storage 1.3.2
- 升级 JavaScript SDK 到 leancloud-storage 1.3.0
- 支持 Koa,相关文档见 https://github.com/leancloud/docs/pull/1403
- 可能存在细微不兼容 升级 JavaScript SDK 到 leancloud-storage 1.0.0
- 存在细微不兼容 强制检查 Class Hook、User Hook、实时通讯 Hook 的签名信息,确保请求来自 LeanCloud(签名错误的请求会打印一条日志)
- 使用 AV.Cloud.run 运行云函数时,被运行的云函数将会得到和 HTTP 调用时结构一致的 request
- 添加对 X-LC-UA 头的跨域支持(适用 JavaScript SDK 1.x)
- 支持新的初始化方式。
- 更新至 JavaScript SDK 1.0.0-rc9.1.
- 彻底废弃了 currentUser.
- 默认启用与 Promise/A+ 兼容的错误处理逻辑。
- 将中间件拆分到了单独的文件。
- AV.Cloud.run 支持 remote 参数。
- AV.Cloud.define 支持 fetchUser 参数。
详见文档 升级到云引擎 Node.js SDK 1.0。
- disableHook API 增加签名机制 (d942c4d)
- 增加 disableHook 的 API : 为了防止 Hook 函数死循环调用,增加相关 API。默认情况下 request.object 会自动设置,如果用户自行创建了对象(比如对象重新 fetch 或者 createWithoutData 创建对象),为了避免循环调用,需要明确的调用该 API。
- 修复 cookieSession 获取用户信息方式:不应该使用 fetch 接口,因为这样总是使用 id 而忽略 sessionToken。改为使用 become 接口。
- 支持 beforeUpdate: 可以通过该 hook 了解发生变更的字段,并且可以通过 error 回调拒绝本次修改请求。
- 支持 RPC 调用,接受和返回 AVObject:和之前的 run 方法不同,现在可以在 Client 端调用云引擎的 Cloud 函数,直接返回 AVObject,具体 API 详见各 SDK。
- 修改 Cloud 函数的未捕获异常处理器: 出现未捕获异常时,如果还没有发出 response 响应,才发出 500 响应,否则直接忽略。
- 支持短 header 请求: 为了缩短请求的长度,我们更改了 header 中关于 appId 等 key 的长度,比如
x-avoscloud-application-id
改为x-lc-id
。 - AV.BigQuery 更名为 AV.Insight: 配合产品更名,如果仍然使用 AV.BigQuery 将会收到一条警告日志
AV.BigQuery is deprecated, please use AV.Insight instead.
。
- #19 Bugfix: 修正 AV.Cloud.httpRequest 提示 qs 没有定义的错误。
- #20 Bugfix: cookieSession 中间件在 sessionToken 失效时能正确处理。
- ecc0014 Bugfix: hook 函数返回对象的格式有误
- 正式 release。