Si vous souhaitez enregistrer des entités personnalisées appartenant à l'usager, vous pouvez suivre les étapes ci-dessous pour y parvenir.
Accédez à la page Conception | Cloud Data | Propriétés globales du portail brainCloud et ajoutez une nouvelle propriété. Nous l'utiliserons pour stocker les données des entités personnalisées appartenant à l'usager.
Créez un script de code cloud qui récupère les entités personnalisées appartenant à l’usager actuel et ajoute les données à la propriété globale que nous avons créée.
"use strict";
function main() {
var response = {};
bridge.logDebugJson("Script inputs", data);
var propname = "backupCustomEntities";
var prop = bridge.getGlobalProperty(propname);
var propJson = JSON.parse(prop);
var aEntitiesWithTypes = [];
//besoin de mettre l'heure de récupération des données à sortir
var timeProxy = bridge.getTimeServiceProxy();
var timeResult = timeProxy.readServerTime();
if (timeResult.status == 200) {
var retrivedTimeMilli = timeResult.data.server_time;
//convertir la date en UTC
var retrivedTime = new Date(retrivedTimeMilli);
// var retrivedTime = timeResult.data.server_time;
var profileId = bridge.getProfileId();
// utiliser la pagination pour déterminer si vous devez obtenir la page suivante
var maxperpage = 100;
var pageNumber = 1;
var customEntityProxy = bridge.getCustomEntityServiceProxy();
var collectionResult = customEntityProxy.sysListCollections();
if (collectionResult.status == 200) {
collectionResult.data.collections.forEach(item=>{
bridge.logInfo("item", Object.keys(item)[0]);
var entityType = Object.keys(item)[0];
var aEntities = [];
var context = {
"pagination": {
"rowsPerPage": maxperpage,
"pageNumber": pageNumber
},
"searchCriteria": {},
"sortCriteria": {
"createdAt": 1
}
};
bridge.logInfo("item.collectionOptions.isOwned", item[entityType].collectionOptions.isOwned);
// filtrer les types qui sont uniquement isOwned true
if (item[entityType].collectionOptions.isOwned){
var customEntityProxy = bridge.getCustomEntityServiceProxy();
var firstPageResult = customEntityProxy.getEntityPage(entityType, context);
var count = firstPageResult.data.results.count;
// response.count = count;
if(count>0){
firstPageResult.data.results.items.forEach(entity=>{
if (entity.ownerId == profileId) aEntities.push(entity);
});
//Si le nombre d'éléments renvoyés est supérieur à maxperpage, la boucle for sera lancée pour appeler la page suivante, jusqu'à ce qu'elle soit entièrement analysée.
var remainder = 0;
var numberpage = 0;
remainder = count % maxperpage;
numberpage = (count-remainder)/maxperpage;
for (var n = 0; n < numberpage; n++ ){
pageNumber ++;
context.pagination.pageNumber = pageNumber;
var nextPageResult = customEntityProxy.getEntityPage(entityType, context);
if (nextPageResult.status == 200) {
nextPageResult.data.results.items.forEach(entity=>{
if (entity.ownerId == profileId) aEntities.push(entity);
});
}
}
}
if(aEntities.length > 0){
var objEntitiesWithType = {};
objEntitiesWithType[entityType+" count"] = count;
objEntitiesWithType[entityType] = aEntities;
aEntitiesWithTypes.push(objEntitiesWithType);
// aEntitiesWithTypes.push({[entityType]: aEntities});
}
}
});
}
bridge.logInfoJson("aEntitiesWithTypes", {"aEntitiesWithTypes":aEntitiesWithTypes});
var objProfile = {};
objProfile[profileId] = aEntitiesWithTypes;
var objretrivedTime = {};
objretrivedTime[retrivedTime + profileId] = objProfile;
Object.assign(propJson,objretrivedTime);
}
response.propJson = propJson;
var globalAppProxy = bridge.getGlobalAppServiceProxy();
globalAppProxy.sysUpdatePropertyJson(propname, propJson);
return response;
}
main();
Accédez à l'Explorateur S2S et appelez la méthode RunBatchUserScript(). Saisissez le nom du script dans le champ correspondant. Laissez les autres champs vides, comme indiqué ci-dessous. (Remarque: si vous n'avez pas encore configuré de serveur, vous devez en créer un depuis la page Conception | Serveurs | Mes serveurs.)
L'opération ci-dessus parcourra tous les usagers de votre application et ajoutera des entités personnalisées appartenant à l'usager à cette propriété globale, puis vous pourrez facilement copier et sauvegarder les données à l'endroit de votre choix.
{
"purpose": "backup users custom entities",
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)bb8895c6-87a6-44b9-9cb7-ffc5ccb0b7c9": {
"bb8895c6-87a6-44b9-9cb7-ffc5ccb0b7c9": [
{
"athletes3 count": 1,
"athletes3": [
{
"entityId": "e3de6c51-6610-48fe-97c3-5552377779e6",
"version": 3,
"acl": {
"other": 1
},
"ownerId": "bb8895c6-87a6-44b9-9cb7-ffc5ccb0b7c9",
"expiresAt": null,
"timeToLive": null,
"createdAt": 1.605760450316E12,
"updatedAt": 1.605760954229E12,
"entityType": "athletes3",
"data": {
"playerName": "Randy Traywick",
"playerId": 123456,
"teamName": "Super Stars",
"jerseyNum": 44
}
}
]
}
]
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)66309efe-e35a-426d-9334-7ac4feaffb05": {
"66309efe-e35a-426d-9334-7ac4feaffb05": []
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)23505cd6-b07c-4304-bb07-87e882b6a525": {
"23505cd6-b07c-4304-bb07-87e882b6a525": [
{
"athletes2 count": 2,
"athletes2": [
{
"entityId": "f95be184-63b8-4b6f-a5a6-e20eaa37e58f",
"version": 1,
"acl": {
"other": 1
},
"ownerId": "23505cd6-b07c-4304-bb07-87e882b6a525",
"expiresAt": null,
"timeToLive": null,
"createdAt": 1.604070305523E12,
"updatedAt": 1.604070305523E12,
"entityType": "athletes2",
"data": {
"playerName": "Jacky Traywick",
"playerId": 123456,
"teamName": "Super Stars",
"jerseyNum": 44
}
},
{
"entityId": "19dc82d2-3d24-48ea-be51-7e5e6fa5dbae",
"version": 1,
"acl": {
"other": 1
},
"ownerId": "23505cd6-b07c-4304-bb07-87e882b6a525",
"expiresAt": null,
"timeToLive": null,
"createdAt": 1.604070316183E12,
"updatedAt": 1.604070316183E12,
"entityType": "athletes2",
"data": {
"playerName": "Jacy Traywick",
"playerId": 123456,
"teamName": "Super Stars",
"jerseyNum": 44
}
}
]
}
]
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)5bc21dfd-610b-49b6-9f82-245d3d0187e8": {
"5bc21dfd-610b-49b6-9f82-245d3d0187e8": []
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)fb9c3874-07d1-48fd-8216-1bb7561ae2b4": {
"fb9c3874-07d1-48fd-8216-1bb7561ae2b4": []
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)35620730-e2f0-468f-bc1d-700942de0b87": {
"35620730-e2f0-468f-bc1d-700942de0b87": []
},
"Wed Jan 20 2021 04:44:52 GMT-0000 (UTC)493dd9ad-5196-4494-aab1-02fbffa4c7af": {
"493dd9ad-5196-4494-aab1-02fbffa4c7af": []
},
"Wed Jan 20 2021 04:44:53 GMT-0000 (UTC)16dfe0a9-2efa-47c7-9a73-70ca9dda2d60": {
"16dfe0a9-2efa-47c7-9a73-70ca9dda2d60": []
}
}