objectId上的PFQuery.find在分析JavaScript SDK(云代码)中未返回唯一行
PFQuery.find on objectId is not returning a unique row in Parse JavaScript SDK (Cloud Code)
我是解析和云代码的新手,但我已经成功地编写了一些运行良好的AfterSave云代码函数。然而,我在这个问题上遇到了很多麻烦,我不知道为什么。请帮忙。。。
我有
- 两个PFObject类:Message和MessageThread
- 消息包含与MessageThread关联的聊天消息
- MessageThread包含一个成员数组(这些成员都是PFUsers)
-
插入到Message后,我想查找相关MessageThread的所有成员,并向他们推送通知
class MessageThread: PFObject { @NSManaged var members: [PFUser] @NSManaged var lastMessageDate: NSDate? @NSManaged var messageCount: NSNumber? override class func query() -> PFQuery? { let query = PFQuery(className: MessageThread.parseClassName()) query.includeKey("members") return query } init(members: [PFUser], lastMessageDate: NSDate?, messageCount: NSNumber?) { super.init() self.members = members self.lastMessageDate = lastMessageDate self.messageCount = messageCount } override init() { super.init() } } extension MessageThread: PFSubclassing { class func parseClassName() -> String { return "MessageThread" } override class func initialize() { var onceToken: dispatch_once_t = 0 dispatch_once(&onceToken) { self.registerSubclass() } } } class Message: PFObject { @NSManaged var messageThreadParent: MessageThread @NSManaged var from: PFUser @NSManaged var message: String @NSManaged var image: PFFile? override class func query() -> PFQuery? { let query = PFQuery(className: Message.parseClassName()) query.includeKey("messageThreadParent") return query } init( messageThreadParent: MessageThread, from: PFUser, message: String, image: PFFile?) { super.init() self.messageThreadParent = messageThreadParent self.from = from self.message = message self.image = image } override init() { super.init() } } extension Message: PFSubclassing { class func parseClassName() -> String { return "Message" } override class func initialize() { var onceToken: dispatch_once_t = 0 dispatch_once(&onceToken) { self.registerSubclass() } } }
接近
- 从请求对象(Message)中,获取其messageThreadParent
- 查找父MessageThread的成员,循环遍历它们,等等
问题
-
当我尝试检索MessageThread对象时,我尝试在Id==threadParent.objectId上进行查询。但是,此查询总是返回我当前的全部8个MessageThread,而不是我需要的单个MessageThread。
Parse.Cloud.afterSave(Parse.Object.extend("Message"), function(request) { Parse.Cloud.useMasterKey(); var theMsg = request.object; var threadParent; var currUsername = request.user.get("username"); var threadUsers; var usernameArray; threadParent = request.object.get("messageThreadParent"); // promise queryM = new Parse.Query(Parse.Object.extend("MessageThread")); queryM.include("members"); queryM.equalTo("id", threadParent.objectId); queryM.find().then(function (threadParam) { console.log(" threads: "); console.log(threadParam.length); //this returns 8, which is the number of threads I have. I would expect just 1, matching threadParent.objectId... console.log("thread is: "); //... additional code follows, which seems to work...
在解决了一个单独的问题一整天之后,我终于发现在Parse的Javascript SDK中"id"answers"objectId"之间有区别。
更改此
queryM.equalTo("id", threadParent.objectId); // doesn't work
至
queryM.equalTo("objectId", threadParent.id); // works!
解决了我的问题。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 创建在Javascript和PHP之间使用的唯一代码的最简单方法
- 如何使用Javascript使多列唯一,解析云代码
- 具有通用代码和唯一数据的HighGlobal配置&标题
- 如何在表单字段输入中生成一个简短的唯一代码号
- 在页面上多次使用WordPress短代码时的唯一ID
- 生成唯一的6位代码js
- 使用php获取机器名称或任何唯一代码
- 安全性:使用仅客户端代码创建唯一的用户连接
- 在javascript中生成唯一的ID.理解这段代码
- 插入唯一代码以下载文件
- 获取值的代码元素和排序唯一值
- 唯一的选择是将该代码块包含到每个函数中
- redis中唯一、安全的短代码(使用节点)
- cookie是向客户端提供来自服务器的指令来执行一些js代码的唯一方法吗?