Description
AfterSave and BeforeDelete triggers updates records on my mongodb server when I run it locally but when I run the same code in the cloud it fails to update the record.In both cases Mongodb is running on a server. I am also triggering the record change via IOS parse SDK. I also do find that in the IOS terminal that it tries to reconnect to the server a bunch of times before working, however when I run the parse server locally I do not get the reconnect issues.
Steps to reproduce
Create a Cloud Code for beforeSave and aftersave
Run a simple IOS update or delete of a Class
Please include a detailed list of steps that reproduce the issue. Include curl commands when applicable.
- ATERSAVE CODE
Parse.Cloud.afterSave("Wallet", function(request, response) {
var currentUser = request.user; //pointer to user object
var SyncTable = Parse.Object.extend("SyncTable");
var query = new Parse.Query(SyncTable);
query.equalTo("syncTableUser", currentUser);
query.equalTo("tableName","User");
query.first({
useMasterKey: true,
success: function(object) {
// Successfully retrieved the object.
object.increment("version");
object.set("isDelete", false);
object.save();
},
error: function(error) {
//error
console.log("Message Error: "+error);
}
});
});
BEFOREDELETE
Parse.Cloud.beforeDelete("Wallet", function(request, response) {
var currentUser = request.user; //pointer to user object
var SyncTable = Parse.Object.extend("SyncTable");
var query = new Parse.Query(SyncTable);
query.equalTo("tableName","Wallet");
query.equalTo("syncTableUser", currentUser);
query.first({
success: function(object) {
// Successfully retrieved the object.
object.increment("version");
object.set("isDelete", true);
object.save();
},
error: function(error) {
//error
}
});
response.success();
});
SWIFT IOS CODE
let wallet = Wallet_P()
wallet.uuid = wallet_r.uuid
wallet.walletUser = PFUser.currentUser()
wallet.currency = wallet_r.currency
wallet.type = wallet_r.type
wallet.categoryType = wallet_r.categoryType
//Relation
let bank = Bank_P()
bank.uuid = wallet_r.walletBank?.uuid
bank.BankName = wallet_r.walletBank?.BankName
bank.balance = wallet_r.walletBank?.balance
bank.participants = wallet_r.walletBank?.participants
bank.totalAmount = wallet_r.walletBank?.totalAmount
wallet.walletBank = bank
wallet.saveEventually()
Expected Results
MongoDB For bothe Local and Server Calls
SyncTable Should be AfterSave
version : 1 (incremented by 1)
isDelete : True
SyncTable Should be BeforeDelete
version : 1 (incremented by 1)
isDelete : False
Actual Outcome
MongoDB for Server
SyncTable Should be AfterSave
version : 0
isDelete : False
SyncTable Should be BeforeDelete
version : 0
isDelete : False
MongoDB for Local
SyncTable Should be AfterSave
version : 1
isDelete : True
SyncTable Should be BeforeDelete
version : 1
isDelete : False
Environment Setup
- Server
- parse-server version: 2.2.17 running on Node version v4.2.6
- Operating System: Ubuntu 14.04.4
- Hardware: 512MB Memmory 20GB Hard Drive
- Remote Server: Digital Ocean
- Local
- parse-server version: 2.2.17 running on Node version v4.2.6
- Operating System: OSX EL Capitan version 10.11.6
- Hardware: 2.8Ghz Core i7
- Localhost: Local Host
- Database
- MongoDB version: 3.0.11
- Storage engine: MMAPv1
- Hardware: Ubuntu 14.04.4
- Remote Server: Digital Ocean
Logs/Trace
2016-09-04T19:35:50.522Z - afterSave triggered for Wallet
Input: {"ACL":{"*":{"read":true},"2lKftPhsKz":{"write":true,"read":true}},"uuid":"ZAi5rZHa1W","walletUser":{"__type":"Pointer","className":"_User","objectId":"2lKftPhsKz"},"type":"Bank","currency":"USD -$","categoryType":"Bank","walletBank":{"__type":"Pointer","className":"Bank","objectId":"6TzvC1JCUV"},"createdAt":"2016-09-04T19:35:50.389Z","updatedAt":"2016-09-04T19:35:50.389Z","objectId":"TfKBK3WCiA"}