node.js - 我应该在数据库中保留多少个网络推送订阅对象?
问题描述
我是网络推送通知的新手,我创建了一个适用于 PC 和移动设备的网络应用程序。我创建了通知,并且由于存储空间有限(Mongo Atlas 中的免费 512 MB),我需要知道我应该在数据库中存储多少推送订阅对象来发送通知?
场景 1:如果用户使用 2 台设备都会收到浮动通知,但如果他丢弃了一台设备,或者更换了浏览器,旧的浏览器条目将变得无用并占用数据库空间。
场景 2:如果用户使用多个设备,我会保留最新设备/浏览器的记录,但这会阻止他在旧设备中收到通知。
哪一个将是最佳的?
子对象的结构:
{"endpoint":"https://fcm.googleapis.com/fcm/send/eDeNLoS7m7M:APA91bF7HHZ6_hujpm47yuikjMNVx247fuLAAkxZbnj_cF2ODmqo-UgU-dKGKYXwNbdq0LS-Ns8eWFFmv52uzQO6agTcEjGMifpfomPwpm8VHEUKxyX3ms7J1aLi34gzKXgdxL8AiAvo",
"expirationTime":null,
"keys": {
"p256dh":"BBDbLS_UBcaDIEgtK9rzCLYRLzYyrC_f9GGPTymPIT79Wpsn_k9x_vpPEa13DOR5ZZ-ohT-YX4aBHloYx0WpdPE",
"auth":"f1UCyrwzENKsKec7qa9Myg"
}
}
集合的猫鼬模式:
const pushNotificationsSchema = mongoose.Schema({
_id: {type: mongoose.Types.ObjectId, require: true, ref: 'User'},
subobjects: {type:[Object], default: []},
time: String
});
提前致谢
解决方案
这是一个权衡问题:
- 如果让你的应用程序免费更重要,那就让它来驱动设计决策,即使这意味着有一个不太有用/功能性的系统。
- 如果拥有更好、更有用/功能更强大的系统更重要,那么要么接受成本,要么在不影响功能的情况下尽量减少成本。这可能包括查找孤立记录/设备并删除它们的功能。
2 的危险在于,如果它没有用,没有人会使用它。
推荐阅读
- cordova - Android 无法构建 - 找不到 com.android.tools:common:25.5.0-alpha-preview-02
- c# - 我需要检测所选选项卡中的文本更改。我怎么能这样做?
- json - OpenWeatherMap 和 Swift 4
- python - 如何在 Python 中将二维数组更改为一维数组
- r - 将数据框写入多个excel文件
- php - 使用 PHP 从 MySql 表创建子菜单
- kubernetes - 将 Google Cloud SQL 凭据连接到 Kubernetes Secret
- python - 从 0.5.1 升级到 0.8.2 后 graph_from_polygon 中的 osmnx TypeError
- arrays - 字符串的动态数组跳过第一个索引
- typescript - 返回扩展匿名类的函数的类型定义