After updating my functions they suddenly started running twice. I have 3 afterSave cloud functions that should should all add their entry to a single class AllNFTPools.
Moralis.Cloud.afterSave("bscNFTPools", (request) => {
const NewPool = Moralis.Object.extend("AllNFTPools");
const newPool = new NewPool();
newPool.set("network", 97);
newPool.set("block_hash", request.object.get("block_hash"));
newPool.set("block_timestamp", request.object.get("block_timestamp"));
newPool.set("transaction_hash", request.object.get("transaction_hash"));
newPool.set("fee", request.object.get("fee"));
newPool.set("uri", request.object.get("uri"));
newPool.set("creationTime", request.object.get("creationTime"));
newPool.set("uid", request.object.get("uid"));
newPool.set("stakingPrice", request.object.get("stakingPrice"));
newPool.set("totalSupply", request.object.get("totalSupply"));
newPool.set("address", request.object.get("address"));
newPool.set("remaining", request.object.get("remaining"));
newPool.set("block_number", request.object.get("block_number"));
newPool.set("createdAt", request.object.get("createdAt"));
newPool.save();
});
Moralis.Cloud.afterSave("activeNFTPools", (request) => {
const NewPool = Moralis.Object.extend("AllNFTPools");
const newPool = new NewPool();
newPool.set("network", 3);
newPool.set("block_hash", request.object.get("block_hash"));
newPool.set("block_timestamp", request.object.get("block_timestamp"));
newPool.set("transaction_hash", request.object.get("transaction_hash"));
newPool.set("fee", request.object.get("fee"));
newPool.set("uri", request.object.get("uri"));
newPool.set("creationTime", request.object.get("creationTime"));
newPool.set("uid", request.object.get("uid"));
newPool.set("stakingPrice", request.object.get("stakingPrice"));
newPool.set("totalSupply", request.object.get("totalSupply"));
newPool.set("address", request.object.get("address"));
newPool.set("remaining", request.object.get("remaining"));
newPool.set("block_number", request.object.get("block_number"));
newPool.set("createdAt", request.object.get("createdAt"));
newPool.save();
});
Moralis.Cloud.afterSave("polygonNFTPools", (request) => {
const NewPool = Moralis.Object.extend("AllNFTPools");
const newPool = new NewPool();
newPool.set("network", 80001);
newPool.set("block_hash", request.object.get("block_hash"));
newPool.set("block_timestamp", request.object.get("block_timestamp"));
newPool.set("transaction_hash", request.object.get("transaction_hash"));
newPool.set("fee", request.object.get("fee"));
newPool.set("uri", request.object.get("uri"));
newPool.set("creationTime", request.object.get("creationTime"));
newPool.set("uid", request.object.get("uid"));
newPool.set("stakingPrice", request.object.get("stakingPrice"));
newPool.set("totalSupply", request.object.get("totalSupply"));
newPool.set("address", request.object.get("address"));
newPool.set("remaining", request.object.get("remaining"));
newPool.set("block_number", request.object.get("block_number"));
newPool.set("createdAt", request.object.get("createdAt"));
newPool.save();
});
This was working correctly but when I tried to update, this behavior started.
serverURL: https://e5uu22ilhkuo.moralis.io:2053/server
[SOLUTION]
Cloud function was triggered twice, once when transaction was first submitted, and another time when the transaction was confirmed. Watch out for the confirmed field when using triggers with Watch Events.