Skip to content

v3.0.0

Choose a tag to compare

@leeyeh leeyeh released this 16 Jun 06:02
· 372 commits to dist since this release

Highlights

  • LiveQuery:通过订阅一个 Query,在其结果发生变动时实时得到通知。详见 《LiveQuery 开发指南》
  • 新的序列化反序列化方法:针对 AV.Object 重新设计了 #toJSON 方法,并提供了一对可靠的序列化反序列化方法。
  • AV.request 方法:公开了低抽象级别的 AV.request 方法,方便开发者直接调用 LeanCloud Rest API。

Breaking Changes

  • 重新设计了 AV.Object 序列化相关的方法:

    • 如果需要将 AV.Object 中的有效信息转换成 JSON Object,请使用 AV.Object#toJSON 方法。请注意通过此方法得到的 JSON 不包含对象的元信息,因此是不可逆的(无法转换回 AV.Object)。
    • 如果需要「存储」或「传输」AV.Object,请使用新增的 AV.Object#toFullJSON(序列化)与 AV.parseJSON(反序列化)方法。

    新版中的 AV.Object#toJSON 相比于 v2 有以下区别:

    • 如果对象某个字段类型是 Pointer,并且有内容(included),新版中会递归地输出这个字段的有效信息(旧版中会输出一个 Pointer 结构)

      new AV.Query('Child').include('father').first()
        .then(child => child.toJSON().father)
        .then(console.log);
      /*
      v3: {
        objectId: "58a461118d6d8100580a0c54",
        name: "John Doe",
        createdAt: "2017-02-15T14:08:39.892Z",
        updatedAt: "2017-02-16T10:49:00.176Z"
      }
      v2: {
        objectId: "58a461118d6d8100580a0c54",
        __type: "Pointer",
        className: "Parent",
      }
    • 如果字段的类型是 Date,新版中会输出该时间的 UTC 格式字符串(旧版中会输出一个 Date 结构)

      const child = new Child().set('birthday', new Data());
      console.log(child.toJSON().birthday);
      /*
      v3: "2011-11-11T03:11:11.000Z"
      v2: {
        __type: "Date",
        iso: "2011-11-11T03:11:11.000Z"
      }

    更多背景与技术细节请参考 #453

  • 为了更好的隔离服务,我们为每个应用提供了独立的域名。对于小程序用户,请前往 《小程序域名白名单配置》 更新域名白名单。

  • 创建 Roleacl 参数不再是可选的。在 v2 中,如果不指定,SDK 会自动为其设置一个 public read-only 的默认 acl,在新版中必须显式的指定。

    // 之前的用法
    new AV.Role('admin');
    
    // 新版中等价于
    var acl = new AV.ACL();
    acl.setPublicReadAccess(true);
    new AC.Role('admin', acl);

Features

  • LiveQuery 功能允许开发者订阅一个 Query,在 Query 的结果发生变动时实时得到通知。

    • 增加了 Query#subscribe 方法,返回该 Query 对应的 LiveQuery 实例;
    • 增加了 LiveQuery 类,在 Query 结果变化时 SDK 会在 LiveQuery 实例上派发 createupdateenterleavedelete 等事件。
  • 开放了低抽象级别的 AV.request 方法,方便开发者直接调用 LeanCloud Rest API。

  • 增加了 AV.setServerURLs 方法,允许单独配置云函数等服务的域名以进行本地调试。

    AV.setServerURLs({
      engine: 'http://localhost:3000',
    });
  • 支持在 Node.js 中通过 Stream 构建 AV.File(仅支持中国节点)。

    const fs = require('fs');
    const readStream = fs.createReadStream('sample.txt');
    const file = new AV.File('filename', readStream);

Bug Fixes

  • 修复了在中国节点 Node.js 中上传文件会阻塞当前线程的问题。