# 데이터 원본 동적 변경

## Content

테이블 시트는 웹페이지를 새로 고침하지 않고도 데이터 원본의 해당 데이터를 실시간으로 주입할 수 있는 기능을 제공합니다. 이 기능은 예를 들어, 라이브 서버에서 연결 오류가 발생했을 때 데이터 소스를 백업 서버로 전환하는 등의 다양한 상황에서 유용하게 사용할 수 있습니다.
데이터 원본을 동적으로 업데이트하려면 아래 단계를 따르시기 바랍니다:

1. **fromJSON** 메서드를 호출합니다.

    ```JavaScript
    spread.fromJSON(spreadJson);
    ```
2. **Promise**의 **resolve** 메서드에서 데이터 소스를 객체로 래핑하여 테이블의 datasource 옵션을 업데이트합니다.

    ```JavaScript
    let myTable = spread.dataManager().tables["myTable"];
    myTable.options = { 
       remote: {               
           read: function () { 
               return Promise.resolve(dataSource); 
                   } 
             } 
    };
    ```
3. 테이블의 **fetch** 메서드를 reload 인수를 사용하여 호출합니다. 이 단계는 데이터 원본을 새로고침하고, **setDataView** 메서드를 통해 업데이트된 데이터 원본을 시트에 반영합니다

    ```JavaScript
    myTable.fetch(true).then(function()
    {
        let myView = myTable.views["myView"];
        let sheet = spread.getActiveSheetTab();
        sheet.setDataView(myView);
    });
    ```

>type=warning
> **참고:** View의 `fetch` 메서드와 Table의 `fetch` 메서드는 동일한 `reload` 인수를 갖습니다. 따라서 `setDataView` 메서드를 사용하면 데이터 뷰를 다시 가져온 후 캐시 상태를 초기화할 수 있습니다.