No it’s not, remember that UpdateAsync passes the previous value of the data, and it will be nil if it has never been set before, I just took a look at the code and it does not use GetAsync, and it only uses SetAsync in studio to see if api services are enabled. (https://github.com/MadStudioRoblox/ProfileService/blob/master/ProfileService.lua)
Oh that makes sense. I’m still at Pre-Alpha stages with my game so I could just reset my data or find a way to secure with DataStore2.
By the way, is there any data-loss issues with ProfileService (without any tweaks) or is it as safe as DataStore2? If so, I might be looking forward to switching to ProfileService.
Seems you’re right! However, still doesn’t do much to prevent duplication
I’m not really sure how then how it prevents duplication, and why would that not help with item duplication? From my understanding it is caused by a race condition between GetAsync and SetAsync, thus only using UpdateAsync will stop that issue.
You run into the same problems with UpdateAsync. Session locking prevents duplication, as duplicators use two clients to prevent data saving.
No you don’t, and the session locking is done with the update async.
Actually, ProfileService uses MessagingService to check if the profile is loaded. UpdateAsync cannot give you that information.
It’s hard to read your replies when you assume false information so boldly XD
No, ProfileService does not use MessagingService nor SetAsync / GetAsync. You might want to check the source code / documentation if you’re going to explain how it works lol.
Unfortunate. I’m usually not wrong about these things. cjj: 1 async: 0
Sorry for the revive, DS2 and Profile Service aren’t necessarily wrappers. They use DataStores yes, but they have their own system for everything, DS2 is about backups, ProfileService is session-locking, and a bunch more. Wrappers are usually just modules which LINK to another module, or service, but that don’t have anything special; They make things EASIER to understand in such module/service, but mostly don’t have protection agaisn’t problems;
What? DataStore2 is definitely a wrapper. It was even advertised as a wrapper for one, but it looks like as time went on its topic was updated, so it doesn’t explicitly say wrapper anymore. The module wraps around data store functions and exposes new behavior using the data store api. Same can be said for ProfileService.
I don’t like to think of them as wrappers though, they are, 100%, but because they go SO FAR into security and making roblox datastores so much better that it’s almost as if you’re using something which is totally different, you get what I mean? I guess before all the DS2 changes it was a little bit more basic but yeah, they’re so great, it’s ALMOST like you’re using a different system for saving data;