内部查询解析
Inner Query Parse
我正在尝试 link 用户创建的票证 link 发送给收件人,但我没有得到任何回报,我能够从票证 table 中获得票证,但是内部查询的匹配似乎 link。离开解析文档,我尝试使用内部查询作为 link 或桥接器使用,如下所示:
let innerQuery = PFQuery(className:"Tickets")
let query = PFQuery(className: "Messages")
//get all tickets for current user
innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)
//objectId is ticketId in tickets table
innerQuery.includeKey("objectId")
//match to ticketId in messages table
query.whereKey("ticketId", matchesQuery: innerQuery)
do {
let returnedObjects = try query.findObjects()
for object in returnedObjects {
let sender = object["sender"] as? String
}
}
} catch {
}
首先,当我们需要在Parse Server 中进行内部查询时,我们会将列保存为指针对象。所以这里需要将Messagetable中的ticketId列保存为[=21=的指针Class ]门票class。你可以这样保存:
let pointerObj = [“__type": "Pointer", "className": "Tickets", "objectId": "yourClassObjectId"]
messagePraseObj.setValue(pointerObj, forKey: “ticketId")
之后,您可以使用下面的代码来完成您的任务。我在我的项目中使用它。
我使用了 iOS SDK 版本 1.17.3 和 swift 4.
let innerQuery = PFQuery.init(className: "Tickets")
innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)
let query = PFQuery.init(className: "Messages")
query.whereKey("ticketId", matchesQuery: innerQuery)
query.includeKey("ticketId")
query.findObjectsInBackground { (returnedObjects, error) in
if error == nil && returnedObjects != nil {
for object in returnedObjects! {
let ticket = object.value(forKey: "ticketId") as! PFObject
let sender = ticket.value(forKey: "user") as? String ?? ""
print("User ID: \(sender)")
}
}
}
更多信息:https://docs.parseplatform.org/ios/guide/#relational-queries
希望对您有所帮助。
let innerQuery = PFQuery(className:"Tickets")
let query = PFQuery(className: "Messages")
//get all tickets for current user
innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)
//objectId is ticketId in tickets table
innerQuery.includeKey("objectId")
//match to ticketId in messages table
query.whereKey("ticketId", matchesQuery: innerQuery)
do {
let returnedObjects = try query.findObjects()
for object in returnedObjects {
let sender = object["sender"] as? String
}
}
} catch {
}
首先,当我们需要在Parse Server 中进行内部查询时,我们会将列保存为指针对象。所以这里需要将Messagetable中的ticketId列保存为[=21=的指针Class ]门票class。你可以这样保存:
let pointerObj = [“__type": "Pointer", "className": "Tickets", "objectId": "yourClassObjectId"]
messagePraseObj.setValue(pointerObj, forKey: “ticketId")
之后,您可以使用下面的代码来完成您的任务。我在我的项目中使用它。 我使用了 iOS SDK 版本 1.17.3 和 swift 4.
let innerQuery = PFQuery.init(className: "Tickets")
innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)
let query = PFQuery.init(className: "Messages")
query.whereKey("ticketId", matchesQuery: innerQuery)
query.includeKey("ticketId")
query.findObjectsInBackground { (returnedObjects, error) in
if error == nil && returnedObjects != nil {
for object in returnedObjects! {
let ticket = object.value(forKey: "ticketId") as! PFObject
let sender = ticket.value(forKey: "user") as? String ?? ""
print("User ID: \(sender)")
}
}
}
更多信息:https://docs.parseplatform.org/ios/guide/#relational-queries
希望对您有所帮助。