【发布时间】:2016-03-22 08:20:57
【问题描述】:
如果我 Parse 数据库中的帖子被点赞,我想通过云代码向作者发送推送。
为了能够向特定用户发送推送,所有安装都存储当前用户的objectId。为了找到喜欢的帖子的作者,我使用查询
var userWhosePostWasLikedQuery = new Parse.Query(Parse.Installation);
userWhosePostWasLikedQuery.equalTo(kClassInstallationKeyCurrentUserId, userWhosePostWasLiked.id);
这很好用:向作者发送一次推送。
现在我只想在作者启用此类推送的情况下发送此推送。因此,每个用户都存储了一个推送设置数组,其中包含不同推送的启用标志。
我现在对所有启用了此类推送的用户使用另一个查询:
const User = Parse.Object.extend(kClassUser);
var pushEnabledUserQuery = new Parse.Query(User);
pushEnabledUserQuery.equalTo(kClassUserKeyPushSettings, kPushNotificationTypePostLiked);
此查询正确返回启用了此类推送的所有用户。
最后,我想通过对启用推送的用户的查询来限制作者作为当前用户的安装查询。这是通过以下方式完成的:
var userWhosePostWasLikedQuery = new Parse.Query(Parse.Installation);
userWhosePostWasLikedQuery.equalTo(kClassInstallationKeyCurrentUserId, userWhosePostWasLiked.id);
userWhosePostWasLikedQuery.matchesKeyInQuery(kClassInstallationKeyCurrentUserId, kPFObjectId, pushEnabledUserQuery);
由于没有第 3 行的旧查询返回 1 个用户,带有附加约束 (matchesKeyInQuery) 的新查询应该返回相同的用户,因为作者启用了推送。
但它返回 2 个用户,即作者和另一个喜欢该帖子的用户。
据我了解,这看起来像是 Parse 错误,因为查询的所有约束都是 ANDed。
有什么想法,也许是一种解决方法?
【问题讨论】:
标签: parse-platform constraints parse-cloud-code pfquery