开源Parse Server

14.数据Data

2017-09-23  本文已影响0人  xiangdong_9013

数据

我们设计Parse SDKs,就是为了在使用client SDKs时不需要担心数据是如何保存的。只需将数据添加到Parse Object,它就会正确保存。

然而,有些情况下,了解在Parse平台上数据是如何存储的还是有用的。

1.数据存储

在内部,Parse将数据存储为JSON格式,因此任何可以转换为JSON的数据类型都可以存储在Parse中。请参阅本指南中的“02.对象Objects”章节的“数据类型”部分,了解特定平台的示例。

包含“$”或“.”字符的键,以及“__type”形式的键是框架中保留用于处理其他类型的,因此请勿自行使用。键名必须只包含数字,字母和下划线,必须以字母开头。值可以是JSON编码的任何内容。

2.数据类型锁定

当一个Class被创建时,它没有定义一个固有的Schema。这意味着对于该类的第一个对象,它可以包含任何类型的字段。

但是,一个字段至少一次被设定后,该字段就被锁定为已保存数据的类型。例如,如果User对象保存了String类型的name字段,则该字段将被限定为String类型(如果您尝试保存其他类型,服务器将返回错误)。

一个特殊情况是,任何字段、无论是什么类型都可以设置为null。

3.数据浏览器

数据浏览器是你可以在app中更新和创建对象的Web UI界面。在这里,您可以看到类中的每个对象保存的原始JSON值。

当使用这个界面时,请记住以下几点:

数据浏览器也是测试Cloud Code Functions(如beforeSave)中Cloud Code有效性的好地方。每当从数据浏览器中更改值或删除对象时,都会运行这些Functions,效果与在客户端代码更改或删除值一样。

4.导入数据

您可以使用CSV或JSON文件将数据导入Parse应用程序。想通过CSV或JSON文件中的数据创建一个新类,请转到数据浏览器,然后单击左侧列中的“导入”按钮(译者注:Parse Server中没有这个按钮)。

这里的JSON是我们REST服务的对象数组或包含一个对象数组的results JSON 对象。它必须遵守JSON标准。一个包含常规对象的文件可能如下所示:

{ "results": [
  {
    "score": 1337,
    "playerName": "Sean Plott",
    "cheatMode": false,
    "createdAt": "2012-07-11T20:56:12.347Z",
    "updatedAt": "2012-07-11T20:56:12.347Z",
    "objectId": "fchpZwSuGG"
  }]
}

任何一种格式的对象都应该包含满足以下条件的键和值:

通常,当对象保存到Parse时,将自动为之分配一个唯一的标识符到objectId字段,以及表示对象在Parse Cloud中创建时间和上次修改时间的createdAt字段和updatedAt字段。当从JSON文件导入数据时,可以手动设置这些字段。请记住以下几点:

除了暴露的字段之外,Parse User类中的对象也可以设置bcryptPassword字段。该字段的值是一个在StackOverflow Answer中描述的模块化加密模式的bcrypt散列密码+salt的字符串。大多数基于OpenSSL的bcrypt实现应该具有内置方法来生成这些字符串。

包含User对象的文件可能如下所示:

{ "results":
  [{
    "username": "cooldude",
    "createdAt": "1983-09-13T22:42:30.548Z",
    "updatedAt": "2015-09-04T10:12:42.137Z",
    "objectId": "ttttSEpfXm",
    "sessionToken": "dfwfq3dh0zwe5y2sqv514p4ib",
    "bcryptPassword": "$2a$10$ICV5UeEf3lICfnE9W9pN9.O9Ved/ozNo7G83Qbdk5rmyvY8l16MIK"
  }]
}

请注意,利用CSV导入时,字段类型仅限于String、Boolean和Number。

5.导出数据

您可以随时从app的“设置”页面导出数据。数据导出的运行优先级低于生产查询,因此如果您的app仍在提供查询,生产流量将始终被赋予更高的优先级,这可能会降低数据导出的速度。

导出格式

每个Collection将以与REST API相同的JSON格式导出,并以单个压缩文件的形式传送。由于内部以JSON格式存储数据,因此我们可以确保导出的格式与数据保存到Parse中的格式非常吻合。其他格式如CSV不能全面支持Parse的所有数据类型。如果您想用CSV格式的数据,您可以使用网上广泛应用的JSON-to-CSV转换器。

离线分析

为了离线分析您的数据,我们强烈建议您使用不需要一次提取整个集合数据的其他方式。例如,您可以尝试仅导出自上次导出以来已更改的数据。这里有一些方法:

上一篇下一篇

猜你喜欢

热点阅读