Я кодирую отношение дружбы в классе User, которое предназначено для дополнительного класса (называемого Matrix). Целью является предоставление дополнительной информации для каждого друга.Parse: Cloud JS code vs Swift не дает одинаковых результатов
Корпус №1: iOS/Swift обеспечивает ожидаемые результаты.
func saveRelation(user: User, state: Bool) {
if let dbOwner = self.dbUser, dbPeer = user.dbUser {
let dbMatrix = PFObject(className: "Matrix")
dbMatrix["userid"] = dbPeer
dbMatrix.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
if(error == nil) && (success == true) {
let relation = dbOwner.relationForKey("friend")
relation.addObject(dbMatrix)
dbOwner.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
if(error == nil) && (success == true) {
self.directory.friend.append(user)
Trace.log("Relation \(user.account.id)", message: "friend")
} else {
ParseError.handle(error!)
}
})
}
})
}
}
где dbOwner является CurrentUser и dbPeer является пикап из списка
Дело № 2: Разбираем результаты Облако кода с неожиданными отношениями. Вставляется только одно отношение.
var UserGet = function(id, res) {
var query = new Parse.Query(Parse.User);
query.get(id, {
success: function(dbUser) { res.success(dbUser); },
error: function(error) { res.error(error); }
});
}
Parse.Cloud.define('Relation.friend', function(req, res) {
Parse.Cloud.useMasterKey();
var owner = req.user;
var query = UserGet(req.params.peerId, {
success: function(dbPeer) {
var Matrix = Parse.Object.extend("Matrix");
var matrix = new Matrix();
matrix.set("userId", dbPeer);
matrix.save(null, {
success: function(dbMatrix) {
var relation = owner.relation("friend");
relation.add(dbMatrix);
owner.save(null, {
success: res.success(true),
error: res.error("Update.failed") });
},
error: function(_error) {
res.error("Save.failed");
}
});
},
error: function(_error) {
res.error("Query.failed");
}
});
});
с клиентом вызова, как показано ниже:
func saveRelation(user: User, state: Bool) {
PFCloud.callFunctionInBackground("Relation.friend",
withParameters: [ "peerId" : user.account.id
])
{ (success: AnyObject?, error: NSError?) -> Void in
if(error == nil) && (success as? Bool == true) {
self.directory.friend.append(user)
Trace.log("Relation \(user.account.id)", message: "friend")
}
}
}
оценил любую помощь.