Requery model with the new record added, Model.updateData doesn't update the query of the model.

  • 1
  • Problem
  • Updated 2 years ago
  • Solved
I was trying to refresh the a model so that it will include the newly created record that i created, but When i checked, the query of the model that i refreshed using model.updateData() didn't change.

var field = arguments[0],    value = arguments[1],
    newDocumentLink='',
    firstRecord = '';

var linkModel = skuid.model.getModel('NewContentLink');
var noteModel = skuid.model.getModel('ContentNote');
var refreshContentDocumentLink = skuid.model.getModel('ContentDocumentLink');
var refreshContentVersion = skuid.model.getModel('ContentVersion');
var activeContact = skuid.model.getModel('SelectedContact');
var activeAccount = skuid.model.getModel('SelectedAccount');
var newContentNote = noteModel.getFirstRow(); 
var contentLinkCondition = refreshContentDocumentLink.getConditionByName('Link');
var contentVersionCondition = refreshContentVersion.getConditionByName('ContentDocumentID');

if(activeContact.data.length !== 0){
    
    firstRecord=activeContact.getFirstRow();
}
else{
    firstRecord=activeAccount.getFirstRow();
}


noteModel.updateRow({ Id:newContentNote.Id  },{
    IsDeleted: false,
    Content: btoa(newContentNote.Content),
    FileType:'SNOTE'
});


noteModel.save({callback: function(result){
    if (result.totalsuccess) {

        //creating a new link
        newDocumentLink = linkModel.createRow({
             additionalConditions: [
        { field: 'ContentDocumentId', value: newContentNote.Id},
        { field: 'LinkedEntityId', value: firstRecord.Id},
        { field: 'ShareType', value: 'V'},
        { field: 'IsDeleted', value: false},
        { field: 'Visibility', value: 'AllUsers'}
             ], doAppend: false
        });
        
        //saving changes on the model. hence the new link
        linkModel.save({callback: function(result){
                if (result.totalsuccess) {
                    
                   // empties these model so that it won't take space in the long run
                    noteModel.emptyData();
                    linkModel.emptyData();
                   
                     //refresh the model ContentDocumentLink
                    refreshContentDocumentLink.setCondition(contentLinkCondition,firstRecord.Id,false);
                    refreshContentDocumentLink.updateData();
                    
                } else {
                    console.log(result.insertResults);
                    console.log(result.updateResults);
                    console.log(result.deleteResults);      
                }
            }});
        
    } else {
        console.log(result.insertResults);
        console.log(result.updateResults);
        console.log(result.deleteResults);      
    }
}});

//refresh the model contentVersion
refreshContentVersion.activateCondition(contentVersionCondition,false);
refreshContentVersion.updateData();
Photo of Lorenz

Lorenz

  • 430 Points 250 badge 2x thumb
  • Frustrated

Posted 2 years ago

  • 1
Photo of Lorenz

Lorenz

  • 430 Points 250 badge 2x thumb
Found out why.....

refreshing of the model should be inside the callback of the refreshing of the contentLink

//saving changes on the model. hence the new link       
linkModel.save({callback: function(result){
                if (result.totalsuccess) {
                    
                    // empty these models, might take up space
                    noteModel.emptyData();
                    linkModel.emptyData();
                    
                    //refresh the models ContentVersion and ContentLink
                    refreshContentDocumentLink.setCondition(contentLinkCondition,firstRecord.Id,false);
                    
                    refreshContentDocumentLink.updateData(function(){
                            refreshContentVersion.activateCondition(contentVersionCondition,false);
                            refreshContentVersion.updateData();
                    });
   
                } else {
                    console.log(result.insertResults);
                    console.log(result.updateResults);
                    console.log(result.deleteResults);      
                }
            }});
Photo of Matt Sones

Matt Sones, Champion

  • 31,478 Points 20k badge 2x thumb
Glad you got it working!
Photo of Karen Waldschmitt

Karen Waldschmitt, Official Rep

  • 8,260 Points 5k badge 2x thumb
Lorenz~

Sorry this was frustrating you. Glad you figured out what was wrong!

Thanks for sharing your solution with the community.
Karen