# 概述

选择阿里云作为服务商时,服务空间资源完全免费,每个账号最多允许创建50个服务空间。阿里云目前处于公测阶段,如有正式业务对稳定性有较高要求建议使用腾讯云。

选择腾讯云作为服务商时,可以创建一个免费的服务空间,资源详情参考腾讯云免费额度;如想提升免费空间资源配额,或创建更多服务空间,则需付费购买。

付费用户享受腾讯云提供的服务协议SLA,详见 (opens new window)

uniCloud的腾讯云版的定价、套餐内容、服务SLA,是由腾讯公司直接公布的。DCloud公司不会加价,包括开发者通过DCloud充值也会直接充到开发者在腾讯云建立的子账户下。DCloud只从腾讯云等云厂商获取返佣,也不会在未来加价收割开发者。

uniCloud提供包月、按量计费两种计费方式(仅腾讯云),具体说明如下:

计费方式 付费方式 计费单位
包月 预付费 参考 腾讯云包月套餐
按量计费 结算时冻结费用,每日结算 参考 腾讯云按量计费

# 阿里云

阿里云的服务空间是纯免费的。但为避免资源滥用,有一些限制,见下。

资源类目 限制 说明
云函数并发限制 1000个实例/服务空间 实际普通项目很难达到这个并发数,阿里云可以设置单实例多并发单实例最多100,理论最大并发量1000*100=100000 (10万),关于单实例多并发请参考:单实例多并发
每个服务空间的云函数数量 48个 实际项目中由于clientDB和单路由云函数,只会用到几个云函数,达不到限制数字。详见 (opens new window)
云函数定时触发最小间隔 1小时 -
云存储容量 10GB -
云数据库容量 100GB -
单次数据库执行时长限制 1秒 不可申请调整

尤其注意阿里云的cdn确实是全免费的,这些免费资源可用于正常公司业务,阿里云不允许开发者使用这些免费的存储及CDN资源来开展图床类业务。

除上面的描述外,阿里云没有其他限制。

因为阿里云免费向DCloud提供了硬件资源,所以DCloud也没有向开发者收费。如果阿里云后续明确了收费计划,DCloud也会第一时间公布在这里。

如有超大型应用突破阿里云资源限制,请发邮件到service@dcloud.io请求协助,可以特批扩大资源。

申请邮件内需要提供以下信息

公司信息		// 个人用户无须此项
负责人
联系电话
公司介绍		// 个人用户无须此项
业务场景		// 与申请资源相关的业务场景,包括应用名称及发布平台
用户规模
申请spaceId
申请资源		// 要具体到申请资源量,例如:云存储要写明申请多大、定时触发要写明申请的触发频率
申请日期

# 腾讯云

# 腾讯云系统限制

类别 系统参数 限制说明
数据库 数据库流量单次出包 16M
单集合索引数量 20个
云存储 单个环境 QPS 30,000QPS
上传对象大小 1. 控制台上传单个对象最大512GB,2. SDK 上传单个对象最大48.82TB (50,000 GB)
批量删除对象数量上限(通过 SDK 发起) 50个
单次获取文件临时链接数量上限 50个
云函数 单个云函数并发执行数量 1,000
单个函数的代码体积(含node_modules和公共模块) 50MB
单个函数的环境变量大小 4KB
内存分配 最小128MB ,最大2,048MB
超时时间 最小1秒,最大60秒
同步请求事件大小 6MB
同步请求响应大小 6MB
固定外网 IP 数量 5个
云函数实例扩容速度 500个/分钟

# 腾讯云免费空间的额度

腾讯云针对每个账号提供了一个有免费额度的服务空间,以方便产品开发测试及体验。具体额度请阅读下方腾讯云付费版包月套餐中的免费版。

免费额度注意事项:

  • 腾讯云的免费空间是以账号为维度的,若有多个服务空间,则仅有一个空间可享受免费额度。
  • 如果已创建免费版的服务空间,则其他服务空间,均无法再享受免费额度。
  • 免费版服务空间付费升级为更高档的包月套餐时,系统会将该空间设置为到期自动降配免费空间(关于自动降配请阅读下面的注意事项),故此时免费额度依然被占用中,其他服务空间亦无法再享受免费额度
  • 按量计费服务空间在开通时可以选择指定是否占用免费额度(如果当前账号还有免费额度的话),如果选择占用免费额度,则不可再创建包月模式的免费服务空间。
  • 非免费包月套餐到期之后如果不进行续费会在一周后销毁

自动降配注意事项:

  • 自动降配会在到期之后的24小时后开始执行
  • 被设置自动降配的服务空间到期之后,会尝试自动降配,但并不能保证一定可以成功,如果你的资源超出了免费版的额度则无法降配。切勿过度依赖此行为
  • 特别要注意的一点是:自动降配为免费版之后,配置的云函数固定出口IP将会失效
  • 腾讯云资源用量统计有延迟,请密切关注自己的业务用量,企业用户推荐直接改用按量计费

# 腾讯云包月套餐

包月套餐是指每个月的支付固定价格,购买一定量的服务器资源。

如果资源超限,则相应资源不可使用。需立即升配套餐。

包月套餐支持升配、降配。以满足资源用量上升或下降的价格调整需求。具体操作见web控制台 (opens new window)的购买套餐界面。

腾讯云资源计费周期和服务空间创建日期有关,具体周期可以在web控制台资源概况处查看。

注意:腾讯云在 2021年1月21日进行了业务调整,下线了基础版1套餐(原免费版),同步上线了新的免费版和特惠基础版1,满足不同场景下的用户需求,免费版套餐适用于产品测试及产品体验场景。 本次调整不会影响现已开通基础版1套餐(原免费版)的服务空间,但新开通的免费服务空间、付费套餐自动降配到的免费服务空间均会使用新免费版的资源额度。

自2021年3月12日后,在按量计费环境内,如果当日有资源使用,且产生的计费金额不足0.01元,将补齐按照0.01元收取。

针对享有免费额度的按量计费环境:

  • 如果该环境用量未超出免费额度,该环境仍为免费环境。
  • 如果该环境用量已经超出免费额度,且超量资源产生的计费金额不足0.01元,将补齐按照0.01元收取。

腾讯云单次数据库执行时长限制为5秒,超出5秒会超时

资源分类 资源细项 基础版1(已下线) 免费版 特惠基础版 基础版2 专业版1 专业版2 旗舰版1
云存储 容量 5GB 5GB 8GB 10GB 50GB 100GB 500GB
下载操作次数 150万/月 2000/月 10万/月 200万/月 750万/月 1500万/月 3750万/月
上传操作次数 60万/月 1000/月 5万/月 100万/月 300万/月 600万/月 1500万/月
CDN 回源流量 5GB/月 1GB/月 2GB/月 10GB/月 50GB/月 150GB/月 500GB/月
CDN CDN 流量 5GB/月 1GB/月 2GB/月 25GB/月 50GB/月 150GB/月 500GB/月
云函数 资源使用量 GBs 4万/月 1000/月 1万/月 20万/月 40万/月 150万/月 400万/月
外网出流量 1GB/月 1GB/月 1GB/月 3GB/月 5GB/月 10GB/月 25GB/月
云函数并发限制 1000个/云函数 1000个/云函数 1000个/云函数 1000个/云函数 1000个/云函数 1000个/云函数 1000个/云函数
函数数量限制 49个 9个 49个 79个 99个 99个 149个
云函数url化数量限制 10个 10个 10个 50个 90个 100个 120个
固定外网 IP × ×
数据库 容量 2GB 2GB 2GB 3GB 5GB 10GB 10GB
同时连接数 20个 5个 20个 50个 100 200个 400个
读操作数 5万/天 500/天 5万/天 25万/天 50万/天 150万/天 500万/天
写操作数 3万/天 300/天 3万/天 15万/天 30万/天 100万/天 300万/天
集合数量限制 100个 15个 50个 150个 200个 300个 400个
备份保留天数 7天 7天 14天 14天 14天 14天 14天
售价(元/月) - 免费 免费 6.9 30 104 390 860

腾讯云完整套餐列表请参考:腾讯云完整套餐列表

除了资源配量不同外,注意只有付费版才有 固定外网IP。如需在微信网页里调用js sdk,需要配置固定外网ip。

部分指标说明

  • **云函数资源使用量:**云函数资源用量最小计费粒度为128MB*100ms,即内存使用为设定的云函数运行内存(默认256MB,最小可设置为128MB),运行时间以100ms为阶梯计算
  • **云函数并发限制:**超出云函数并发限制的请求会直接失败
  • **函数数量限制:**实际项目中由于clientDB和单路由云函数,只会用到几个云函数,达不到限制数字。详见 (opens new window)
  • **数据库读写次数:**修改或读取条数为0时也计算一次读写,即只要调用接口就计算一次。

# 腾讯云按量计费

按量计费,意味着不是每个月支付固定套餐,而是根据使用量付费。

按量付费需要预存一定金额,每日根据前一日资源消耗生成账单,从预存金额中扣除。

如果预存金额不足,则服务空间将不可用,需要立即充值。

按量付费目前仅企业认证用户可以开通,个人用户无法购买。

腾讯云按量计费服务空间定价如下:

资源分类 资源细项 售价(元)
云存储 容量(GB/天) 0.0043
下载操作次数(万次) 0.01
上传操作次数(万次) 0.01
CDN 回源流量(GB) 0.15
CDN CDN 流量(GB) 0.18
云函数 资源使用量(GBs) 0.00011108
外网出流量(GB) 0.8
函数数量限制 149个
支持固定外网 IP
云函数url化数量限制 150个
数据库 容量(GB/天) 0.07
读操作数(万次) 0.015
写操作数(万次) 0.05
同时连接数1000个
集合数量限制800个
备份保留天数14天
支持指定回档时间
前端网站托管 容量(GB/天) 0.0043
流量(GB) 0.21

注意

  • 如果之前没有开通免费版腾讯云服务空间,则新开通的一个按量付费服务空间可以选择是否占用免费资源。如果选择了占用免费资源将无法创建预付费免费版。
  • 按量计费服务空间开通时会自动开通前端网页托管,如果按量付费服务空间拥有免费额度,会默认赠送一个月前端网站托管(容量1GB、流量5GB),一个月之后会正常按量收费。
  • 按量计费服务空间删除有次数限制,每个月最多删除一次,每个账号一共可以删除4次,删除之前需要关闭前端网页托管服务并删除所有云端资源(包括云函数、数据库、云存储)
  • 按量计费是延迟结算,可能存在余额超支的情况,故创建按量付费服务空间时,需支付一定的保证金,用以抵消超支结算的情况。如果您不再申请使用uniCloud服务,可以申请退还保证金(目前需要发送邮件到service@dcloud.io)。

关于云函数1000并发的说明

以云函数运行(计费时间)200ms为例,1000并发的云函数,每秒处理1000*(1/0.2) = 5000次请求,即QPS为5000

# 完整套餐列表

# 免费版

资源项 使用限制
云存储容量 5GB
云存储下载次数限制 2000次/月
云存储上传次数限制 1000次/月
云存储CDN回源流量 1GB/月
云存储CDN流量 1GB/月
云函数资源用量 1GB/月
云函数外网出流量 1GB/月
云函数并发限制 1000/云函数
云函数数量限制 9个
云函数支持固定出口IP ×
云函数url化数量限制 10个
数据库容量 2GB
数据库同时连接数 5个
数据库读操作数 500次/天
数据库写操作数 300次/天
数据库集合数量限制 15个
备份保留天数 7天

# 特惠基础版 1

资源项 使用限制
云存储容量 8GB
云存储下载次数限制 10万次/月
云存储上传次数限制 5万次/月
云存储CDN回源流量 2GB/月
云存储CDN流量 2GB/月
云函数资源用量 2GB/月
云函数外网出流量 1GB/月
云函数并发限制 1000/云函数
云函数数量限制 49个
云函数支持固定出口IP
云函数url化数量限制 10个
数据库容量 2GB
数据库同时连接数 20个
数据库读操作数 5万次/天
数据库写操作数 3万次/天
数据库集合数量限制 50个
备份保留天数 14天

# 基础版 2

资源项 使用限制
云存储容量 10GB
云存储下载次数限制 200万次/月
云存储上传次数限制 100万次/月
云存储CDN回源流量 10GB/月
云存储CDN流量 25GB/月
云函数资源用量 25GB/月
云函数外网出流量 3GB/月
云函数并发限制 1000/云函数
云函数数量限制 79个
云函数支持固定出口IP
云函数url化数量限制 50个
数据库容量 3GB
数据库同时连接数 50个
数据库读操作数 25万次/天
数据库写操作数 15万次/天
数据库集合数量限制 150个
备份保留天数 14天

# 数据库版 1

资源项 使用限制
云存储容量 5GB
云存储下载次数限制 150万次/月
云存储上传次数限制 60万次/月
云存储CDN回源流量 5GB/月
云存储CDN流量 5GB/月
云函数资源用量 5GB/月
云函数外网出流量 3GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 50个
数据库容量 5GB
数据库同时连接数 100个
数据库读操作数 50万次/天
数据库写操作数 30万次/天
数据库集合数量限制 200个
备份保留天数 14天

# 云函数版 1

资源项 使用限制
云存储容量 5GB
云存储下载次数限制 150万次/月
云存储上传次数限制 60万次/月
云存储CDN回源流量 5GB/月
云存储CDN流量 5GB/月
云函数资源用量 5GB/月
云函数外网出流量 5GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 50个
数据库容量 3GB
数据库同时连接数 50个
数据库读操作数 25万次/天
数据库写操作数 15万次/天
数据库集合数量限制 150个
备份保留天数 14天

# 专业版 1

资源项 使用限制
云存储容量 50GB
云存储下载次数限制 750万次/月
云存储上传次数限制 300万次/月
云存储CDN回源流量 50GB/月
云存储CDN流量 50GB/月
云函数资源用量 50GB/月
云函数外网出流量 5GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 90个
数据库容量 5GB
数据库同时连接数 100个
数据库读操作数 50万次/天
数据库写操作数 30万次/天
数据库集合数量限制 200个
备份保留天数 14天

# CDN版 1

资源项 使用限制
云存储容量 50GB
云存储下载次数限制 750万次/月
云存储上传次数限制 300万次/月
云存储CDN回源流量 50GB/月
云存储CDN流量 500GB/月
云函数资源用量 500GB/月
云函数外网出流量 3GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 90个
数据库容量 3GB
数据库同时连接数 50个
数据库读操作数 25万次/天
数据库写操作数 15万次/天
数据库集合数量限制 150个
备份保留天数 14天

# 专业版 2

资源项 使用限制
云存储容量 100GB
云存储下载次数限制 1500万次/月
云存储上传次数限制 600万次/月
云存储CDN回源流量 150GB/月
云存储CDN流量 150GB/月
云函数资源用量 150GB/月
云函数外网出流量 10GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 100个
数据库容量 10GB
数据库同时连接数 200个
数据库读操作数 150万次/天
数据库写操作数 100万次/天
数据库集合数量限制 300个
备份保留天数 14天

# 云函数版 2

资源项 使用限制
云存储容量 10GB
云存储下载次数限制 200万次/月
云存储上传次数限制 100万次/月
云存储CDN回源流量 10GB/月
云存储CDN流量 25GB/月
云函数资源用量 25GB/月
云函数外网出流量 25GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 70个
数据库容量 10GB
数据库同时连接数 200个
数据库读操作数 150万次/天
数据库写操作数 100万次/天
数据库集合数量限制 300个
备份保留天数 14天

# 数据库版 2

资源项 使用限制
云存储容量 10GB
云存储下载次数限制 200万次/月
云存储上传次数限制 100万次/月
云存储CDN回源流量 10GB/月
云存储CDN流量 25GB/月
云函数资源用量 25GB/月
云函数外网出流量 10GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 70个
数据库容量 50GB
数据库同时连接数 400个
数据库读操作数 500万次/天
数据库写操作数 300万次/天
数据库集合数量限制 400个
备份保留天数 14天

# 专业版 3

资源项 使用限制
云存储容量 300GB
云存储下载次数限制 2500万次/月
云存储上传次数限制 1000万次/月
云存储CDN回源流量 300GB/月
云存储CDN流量 300GB/月
云函数资源用量 300GB/月
云函数外网出流量 20GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 110个
数据库容量 20GB
数据库同时连接数 300个
数据库读操作数 300万次/天
数据库写操作数 200万次/天
数据库集合数量限制 400个
备份保留天数 14天

# CDN版 2

资源项 使用限制
云存储容量 100GB
云存储下载次数限制 1500万次/月
云存储上传次数限制 600万次/月
云存储CDN回源流量 150GB/月
云存储CDN流量 3072GB/月
云函数资源用量 3072GB/月
云函数外网出流量 5GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 100个
数据库容量 5GB
数据库同时连接数 100个
数据库读操作数 50万次/天
数据库写操作数 30万次/天
数据库集合数量限制 200个
备份保留天数 14天

# 旗舰版 1

资源项 使用限制
云存储容量 500GB
云存储下载次数限制 3750万次/月
云存储上传次数限制 1500万次/月
云存储CDN回源流量 500GB/月
云存储CDN流量 500GB/月
云函数资源用量 500GB/月
云函数外网出流量 25GB/月
云函数并发限制 1000/云函数
云函数数量限制 149个
云函数支持固定出口IP
云函数url化数量限制 50个
数据库容量 10GB
数据库同时连接数 400个
数据库读操作数 500万次/天
数据库写操作数 300万次/天
数据库集合数量限制 400个
备份保留天数 14天

# 云函数版 3

资源项 使用限制
云存储容量 50GB
云存储下载次数限制 750万次/月
云存储上传次数限制 300万次/月
云存储CDN回源流量 50GB/月
云存储CDN流量 150GB/月
云函数资源用量 150GB/月
云函数外网出流量 100GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 90个
数据库容量 20GB
数据库同时连接数 300个
数据库读操作数 300万次/天
数据库写操作数 200万次/天
数据库集合数量限制 400个
备份保留天数 14天

# 数据库版 3

资源项 使用限制
云存储容量 50GB
云存储下载次数限制 750万次/月
云存储上传次数限制 300万次/月
云存储CDN回源流量 50GB/月
云存储CDN流量 50GB/月
云函数资源用量 50GB/月
云函数外网出流量 25GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 90个
数据库容量 200GB
数据库同时连接数 500个
数据库读操作数 5000万次/天
数据库写操作数 3000万次/天
数据库集合数量限制 800个
备份保留天数 14天

# CDN版 3

资源项 使用限制
云存储容量 500GB
云存储下载次数限制 3750万次/月
云存储上传次数限制 1500万次/月
云存储CDN回源流量 500GB/月
云存储CDN流量 10240GB/月
云函数资源用量 10240GB/月
云函数外网出流量 10GB/月
云函数并发限制 1000/云函数
云函数数量限制 99个
云函数支持固定出口IP
云函数url化数量限制 110个
数据库容量 10GB
数据库同时连接数 200个
数据库读操作数 150万次/天
数据库写操作数 100万次/天
数据库集合数量限制 300个
备份保留天数 14天

# 旗舰版 2

资源项 使用限制
云存储容量 700GB
云存储下载次数限制 4500万次/月
云存储上传次数限制 2000万次/月
云存储CDN回源流量 600GB/月
云存储CDN流量 1000GB/月
云函数资源用量 1000GB/月
云函数外网出流量 100GB/月
云函数并发限制 1000/云函数
云函数数量限制 149个
云函数支持固定出口IP
云函数url化数量限制 130个
数据库容量 50GB
数据库同时连接数 500个
数据库读操作数 1000万次/天
数据库写操作数 500万次/天
数据库集合数量限制 500个
备份保留天数 14天

# 旗舰版 3

资源项 使用限制
云存储容量 1000GB
云存储下载次数限制 5000万次/月
云存储上传次数限制 2500万次/月
云存储CDN回源流量 800GB/月
云存储CDN流量 2000GB/月
云函数资源用量 2000GB/月
云函数外网出流量 200GB/月
云函数并发限制 1000/云函数
云函数数量限制 149个
云函数支持固定出口IP
云函数url化数量限制 110个
数据库容量 100GB
数据库同时连接数 500个
数据库读操作数 2000万次/天
数据库写操作数 1000万次/天
数据库集合数量限制 600个
备份保留天数 14天

# 企业版 1

资源项 使用限制
云存储容量 1300GB
云存储下载次数限制 6000万次/月
云存储上传次数限制 3000万次/月
云存储CDN回源流量 1000GB/月
云存储CDN流量 4000GB/月
云函数资源用量 4000GB/月
云函数外网出流量 400GB/月
云函数并发限制 1000/云函数
云函数数量限制 199个
云函数支持固定出口IP
云函数url化数量限制 900个
数据库容量 200GB
数据库同时连接数 500个
数据库读操作数 5000万次/天
数据库写操作数 3000万次/天
数据库集合数量限制 800个
备份保留天数 14天

# 发生故障时如何判断故障点

当你的线上系统故障时,可以参考此文档判断责任归属:如何判断是DCloud或阿里云或腾讯云的问题 (opens new window)

# 云厂商之间的迁移

# 数据库迁移

目前可以使用云数据库的导入导出进行迁移,迁移数据库之前可以使用导出db_init.json功能将所有集合及索引导出。再使用数据导入导出功能进行迁移。导入导出请参考:数据导入导出和备份

也可以直接使用第三方封装好的插件:unicloud数据库一键搬家工具,支持阿里云与腾讯云互转。支持跨账号转。 (opens new window)

# 腾讯云迁移到阿里云

迁移数据可以通过在腾讯云服务空间导出数据表为json文件,在阿里云服务空间导入json文件到表的方式进行迁移。

# 阿里云迁移到腾讯云

由于此前腾讯云并未完全支持ObjectId类型的数据,在阿里云迁移到腾讯云时需要注意处理一下ObjectId类型的数据,包括自动生成的_id字段以及关联到其他表的_id的字段。简单来说就是将导出的数据内的ObjectId类型的数据处理成字符串且不满足ObjectId的格式。

例:

// 原始数据
{"_id":{"$oid":"60fa6d25cd84d60001ec38a2"},"uid":{"$oid":"60fa6d1d2e5faa0001ade857"}}

// 调整后的数据
{"_id":"60fa6d25cd84d60001ec38a2a","uid":"60fa6d1d2e5faa0001ade857a"} // 在结尾追加了一个“a”使其不满足ObjectId格式

以下为一个简单的脚本示例用于处理导出的json文件

如果将此文件存储为parse.js,使用node parse.js 输入文件相对或绝对路径 输出文件相对或绝对路径即可处理导出的json文件

const fs = require('fs')
const path = require('path')
const readline = require('readline')

const cwd = process.cwd()
const inputPath = path.resolve(cwd, process.argv[2])
const outputPath = path.resolve(cwd, process.argv[3])

if (fs.existsSync(outputPath)) {
  throw new Error(`输出路径(${outputPath})已存在`)
}

function getType(val) {
  return Object.prototype.toString.call(val).slice(8, -1).toLowerCase()
}
function parseRecord(obj) {
  const type = getType(obj)
  switch (type) {
    case 'object':
      if (obj.$oid) {
        return obj.$oid + 'a'
      }
      const keys = Object.keys(obj)
      for (let i = 0; i < keys.length; i++) {
        const key = keys[i];
        obj[key] = parseRecord(obj[key])
      }
      return obj
    case 'array':
      for (let i = 0; i < obj.length; i++) {
        obj[i] = parseRecord(obj[i])
      }
      return obj
    default:
      return obj
  }
}

async function parseCollection() {
  const inputStream = fs.createReadStream(inputPath)
  const outputStream = fs.createWriteStream(outputPath)

  const rl = readline.createInterface({
    input: inputStream
  });

  for await (const line of rl) {
    const recordStr = line.trim()
    if (!recordStr) {
      continue
    }
    const record = parseRecord(JSON.parse(recordStr))
    outputStream.write(JSON.stringify(record) + '\n')
  }
  rl.close()
  console.log(`处理后的文件已输出到${outputPath}`)
}

parseCollection()