About data management of anvil-app-server
      
      
        
        
        
        
  Preface  h2>
 It's nice to be able to run the app on ʻanvil-app-server`, but let's run the `News Aggregater` app created on the [Anvil](https://anvil.works/) site. Even so, it doesn't seem to move smoothly. .. ..
 I did some research.
  Premise  h4>
 --You have already created the [News Aggregator](https://anvil.works/learn/tutorials/database-backed-apps) app in Anvil.
  Environment  h4>
 --Ubuntu 20.04 LTS Japanese Remix
 --Hyper-V Manager 10.0.18362.1
- anvil-app-server v1.1
  Download and run the News Aggregator app  h2>
 Once you've created your app, you can download it from `View history` with the` git clone` command.
Click "View history"

Click "Clone with Git"

Copy the line "git clone ssh: // ~" and execute it with the command.

git clone ssh://[email protected]:2222/324IEWAMVBYU2Y77.git News_Aggregater
XXXX is the email address of the account registered on the Anvil site. 
- If you have enabled two-factor authentication, you will have to use the SSH public key, so if you are using it, temporarily remove the two-step verification. I think it will be easier if you register a public key in Git.
 
Launch the application with ʻanvil-app-server`.
anvil-app-server --app News_Aggregater
Access http: // localhost: 3030 with a browser.

Suddenly an error.

  Problems  h2>
 In the News Aggrigator app, the article `category` is registered in advance in the` categories` table and selected from there, but since the app does not contain table data, "empty data" Will result in an error.
  Access PostgreSQL of anvil-app-server with pgadmin4  h2>
 ʻAnvil-app-server` contains its own PostgreSQL server, so access it.
- Username : postgres
--Password: (directory where anvil-app-server was executed) /.anvi-data/postgres.password
--Port: (directory where anvil-app-server was executed) /.anvi-data/db/postmaster.opts
 
However, apparently, there is neither a ʻarticles table nor acategories` table that the app should need.

For the time being, if you look at the contents of the existing table, you will find the information of the table created by the application in the ʻapp_storage_tables` table.

Also, looking at creating data using the todo app that can be created with the create-anvil-app command, it turns out that data has been added to the ʻapp_storage_data` table.

  What does that mean?  H2>
 From the above,
--Table information used by the app is stored in JSON format in the ʻapp_storage_tables table.  --When accessing data from the app, access the JSON format data in the ʻapp_storage_data table based on the information in the ʻapp_storage_tables` table.
From the point of view that the data layer and the logic layer can be matched no matter what app you make, it is not unthinkable to use a meta table, but it is a mechanism that frustrates the hearts of amateurs.
  Others  h2>
 When I was able to see what kind of data management it was, I went back to Anvil's site and downloaded the data in order to import the data.
 However, the downloaded data cannot be easily imported.
 In the case of the `categories` table of News Aggrigator this time,
| ID | 
name | 
| [65114][57547127] | 
entertainment | 
| [65114][57547131] | 
business | 
| [65114][57547132] | 
travel | 
| [65114][57547134] | 
sport | 
You have to write the JSON format data in a form that is consistent with the meta table of the local DB.
- The ID column is "probably" the information when the data is on the server hosted by Anvil, so it doesn't seem to make much sense in the local DB. Intuitively, I think it's about table ID and row ID.